【问题标题】:Implicit convert CString to char*将 CString 隐式转换为 char*
【发布时间】:2011-08-08 05:47:49
【问题描述】:

我已经下载了一个示例代码,因此该代码中有一些 CString 变量作为 char* 传递给 sscanf() 函数,编译器隐式转换这些 CString 并且代码编译正常。工作正常的代码在这里:

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

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

当我尝试编写自己的简单代码尝试以相同的方式操作 CString 变量但编译器说不能将 CString 转换为 cahr*

时,问题就在这里

【问题讨论】:

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

标签: c++ visual-c++ mfc


【解决方案1】:

我怀疑您自己的代码正在使用 unicode(UNICODE 常量定义)。这意味着CString 正在使用宽字符,并将隐式转换为wchar_t*,但不会转换为char*

如果是这样,有三种可能的解决方案:

  1. 使用swscanfsscanf 的宽字符版本(推荐);
  2. 明确使用CStringA 而不是CString,因此您使用的是CString 的ANSI 版本;
  3. 将您的项目更改为使用多字节字符而不是 unicode(这可以从 Visual Studio 中的项目属性中完成)。

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 2020-06-12
    • 2010-10-25
    • 2015-05-14
    • 2012-09-17
    • 2015-07-03
    • 2020-04-11
    • 2011-11-02
    相关资源
    最近更新 更多