2011-08-08 9 views
0

으로 변환했습니다. 샘플 코드를 다운로드 했으므로 해당 코드에 sscanf() 함수에 전달 된 일부 CString 변수가 char * 형식으로 컴파일러에서 암시 적으로 해당 CString과 코드를 fine.the로 변환합니다. 잘 작동 코드는 여기에 있습니다 : 내가 같은 방법으로 CString이 변수를 조작하려고 내 자신의 간단한 코드를 작성하려고하지만, 컴파일러에 CString을 변환 할 수없는 말할 때암시 적 CString을 char *

CString m_strVersionXFS; 
m_strVersionXFS = _T("00029903"); 

DWORD nVersion; 
sscanf(m_strVersionXFS,"%08X",&nVersion); 

문제가 여기에있다 커미터 *

+0

약간의 수정 : 그것은'char *'이 아니라'const char *'입니다. 당신은 비 const로 만들 수 없습니다. –

답변

2

귀하의 코드가 유니 코드 (UNICODE 상수 정의)를 사용하고있는 것으로 의심됩니다. 즉, CString은 와이드 문자를 사용하며 암시 적으로 wchar_t*으로 변환되지만 char*이 아닙니다. 이런 경우

, 세 가지 가능한 솔루션이 있습니다 :

  1. 사용 swscanf, sscanf의 와이드 문자 버전 (권장)
  2. CString 대신 CStringA을 명시 적으로 사용하므로 ANSI 버전 CString을 사용하고 있습니다.
  3. 유니 코드가 아닌 멀티 바이트 문자를 사용하도록 프로젝트를 변경하십시오 (Visual Studio의 프로젝트 속성에서 수행 할 수 있음).
+0

감사합니다. –