C++ 隐式转换CString为char*
我下载了一个示例代码,因此该代码中有一些CString变量作为char*传递给sscanf()函数。编译器隐式转换这些CString,代码complie fine。工作正常的代码如下:C++ 隐式转换CString为char*,c++,visual-c++,mfc,C++,Visual C++,Mfc,我下载了一个示例代码,因此该代码中有一些CString变量作为char*传递给sscanf()函数。编译器隐式转换这些CString,代码complie fine。工作正常的代码如下: CString m_strVersionXFS; m_strVersionXFS = _T("00029903"); DWORD nVersion; sscanf(m_strVersionXFS,"%08X",&nVersion); 问题在于,当我试图编写自己的简单代码时,它试图以相同的方式操作CSt
CString m_strVersionXFS;
m_strVersionXFS = _T("00029903");
DWORD nVersion;
sscanf(m_strVersionXFS,"%08X",&nVersion);
问题在于,当我试图编写自己的简单代码时,它试图以相同的方式操作CString变量,但编译器说它无法将CString转换为cahr*我怀疑您自己的代码使用的是unicode(
unicode
常量定义)。这意味着CString
正在使用宽字符,并将隐式转换为wchar\u t*
,但不会转换为char*
如果是这种情况,有三种可能的解决方案:
swscanf
,sscanf的宽字符版本(推荐)李>
CString a
而不是CString
,因此您使用的是ANSI版本的CString
李>
只是一些小的修正:它是
const char*
,而不是char*
。你不能让它成为非常量。