我已经下载了一个示例代码,因此在该代码中有一些CString变量作为char *传递给sscanf()函数,编译器隐式转换那些CString并且代码编译正常。这里运行正常的代码在这里:
CString m_strVersionXFS;
m_strVersionXFS = _T("00029903");
DWORD nVersion;
sscanf(m_strVersionXFS,"%08X",&nVersion);
当我尝试编写自己的简单代码时,问题出在这里,该代码试图以相同的方式操作CString变量,但编译器说不能将CString转换为cahr *
答案 0 :(得分:2)
我怀疑你自己的代码正在使用unicode(UNICODE
常量定义)。这意味着CString
使用宽字符,并会隐式转换为wchar_t*
,但不会转换为char*
。
如果是这种情况,有三种可能的解决方案:
swscanf
,sscanf
的宽字符版本(推荐); CStringA
代替CString
,因此您使用的是CString
的ANSI版本;