C++ 隐式转换CString为char*

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变量作为char*传递给sscanf()函数。编译器隐式转换这些CString,代码complie fine。工作正常的代码如下:

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
  • 将项目更改为使用多字节字符而不是unicode(这可以通过Visual Studio中的项目属性完成)

  • 只是一些小的修正:它是
    const char*
    ,而不是
    char*
    。你不能让它成为非常量。