2012-12-24 5 views
1

가능한 중복 :
Use CString in console app when using VS ExpressC++ (2012 익스프레스) CString을 문제

나는 C와 심각하게 녹슬은, 많이 나는 그것을 사용하는 마지막 시간 이후 변경된 것 같습니다.

VS2008로 작성된 프로그램을 만들려고하는데, 2012 Express 만 사용하고 있습니다. 자연스럽게 오류는 어디 에나 있습니다.

목록의 첫 번째 항목은 CString입니다. 선언되지 않은 식별자로 계속 사용됩니다. 내가 선택한 라이브러리에서 VS2012 Express에는 라이브러리가 포함되어 있지 않습니다. 그래서 해결 방법을 찾아야합니다. 지금까지 구글은 나에게 이해할 수없는 결과를 주었다. (나는 심각하게 녹슬었다.

누구나 내게 아래 코드에서 CString의 더 쉬운 대안을 줄 수 있습니까? 감사!

bool Decoder::decode(LPCWSTR theCaption, TABLE_SUMMARY& table) 
{ 

// If the caption doesn't contain the word "You" return false 
CString strCaption = theCaption; 


if (-1 == strCaption.Find(L"You")) 
    return false; 
+0

이 시도 ... 물론

다른 MFC 참조가 다른 문제 (... 제한하는 경우 꽤 쉽게해야합니다) 누락하여 CString 멤버 중 하나를 구현해야합니다? : http://stackoverflow.com/questions/5760186/use-cstring-in-console-app-when-using-vs-express – FreudianSlip

+0

Erm ..."CString"에 "CString"이 없으므로 녹슬지 않습니다. 비슷한 문법을 ​​사용하는 다른 언어 인 "C++"을보고있는 것입니다. – Johnsyweb

+0

FruedianSlip에서 StdString을 시도했지만 운이 없습니다. 내 프로젝트에 StdString.h 파일을 추가했지만 여전히 형식 라이브러리 파일 stdstring을 열 수 없습니다. #import와 #include를 시도했습니다. 나에게는 오랜 시간이되어 좌절했다! –

답변

0

그것이 내가 MFC를 사용하지 않는 나이, 그래서 나는이 제안이 죽은 방법이 유발되지 않음을 확신 할 수 없다 ... 당신은 MFC를 직접 컴파일해야합니다

. Here 몇 가지 자세한 제안을 찾았습니다. 내가 말했듯이, 나는 지금 시도 할 수 없다.

HTH

0
#include <cwchar> 

... 

if (std::wcsstr(theCaption, L"You") == 0) 
    return false 
0

왜 기본 CRT 기능을 사용하지?

bool Decoder::decode(LPCWSTR theCaption, TABLE_SUMMARY& table) 
{ 
    if (wcsstr(theCaption, L"You") == NULL) 
     return false; 
    ... 
} 

는 대소 문자 구분을해야 할 경우

나는이 wcsistr 구현하는 것이 좋습니다.

0

MFC를 대체하거나 STL로 바꿀 수있는 WTL을 참조하십시오. CString을 처리하기 만하면 std :: string을 사용하여 인터페이스에서 누락 된 부분을 추가 할 수 있습니다.

가장 흥미로운 것은 CString ANSI 프로그램의 경우 LPCSTR로 변환되거나 유니 코드의 경우 LPCWSTR로 변환된다는 것입니다.

e.e.

class CString : std::string { 
public: 

    operator PCSTR() const { return c_str(); } 
    operator PCWSTR() const { return c_wstr(); } 
}; 

같은 당신의 즉각적인 문제 (테스트되지 않은 코드 ...) 같은 암시 적 연산자는 WINAPI 직접 CString을 을 통과 할 수 있다는

주를 해결할 수 있습니다.

스마트 복사본 할당 (쓰기)과 쌍을 이루면 그 MFC가 구현됩니다 (미안하지만 std :: string that). CString이 좋습니다.

당신은