导入 VC++2005 时 CString 出错?

Posted

技术标签:

【中文标题】导入 VC++2005 时 CString 出错?【英文标题】:Error with CString when I import into VC++2005? 【发布时间】:2013-01-09 15:03:57 【问题描述】:

我在 VC++6.0 中编写代码并将其导入 VC++2005。 我现在在插入 unicode 时遇到了一个模棱两可的错误?

CString s;

s.Format("%f\r\n", (double)timebTime.time + (double)timebTime.millitm / 1000);
s+="RAMP,"; 
s+=0x00b5;  // <-- Error: VC++(2005):  "error C2593: 'operator +=' is ambiguous"
s+="m";

【问题讨论】:

这是MFC的东西,对吧? 【参考方案1】:

注意VC++6.0的默认编译模型是ANSI/MBCS(即TCHARcharCStringchar的序列等),而不是VC++ 2005的默认编译模型是Unicode(即TCHARwchar_tCString实际上是一个CStringW,即一个wchar_t字符串)。

我只是使用 Unicode 模型(不要担心 ANSI/MBCS 兼容性和TCHAR_T("...") 等),然后像这样调整您的代码:

static const wchar_t microSign = 0x00B5;

CString s;  
s.Format(L"%f\r\n", 
    static_cast<double>(timebTime.time) +
    static_cast<double>(timebTime.millitm) / 1000.0);
s += L"RAMP,"; 
s += microSign;
s += L"m";

请注意,使用命名常量(如microSign)使代码比0x00B5“幻数”更具可读性。

此外,我会将格式字符串(包括“RAMP,µm”部分)存储在应用程序资源中并从那里加载它,而不是在源代码中构建它。

【讨论】:

以上是关于导入 VC++2005 时 CString 出错?的主要内容,如果未能解决你的问题,请参考以下文章

MFC编写的程序,release时出错,希望高手能够指点!!!

vc++2005到2015都安装了,为啥还提示确实运行库

MPI在VC中配置出现下面情况:编译时没错,但是build时就出错了

VS2008 编译出错,求救中...

visual stdio2005 如何像vc++6.0一样编译和调试啊

VC添加文件到工程出错问题--FileTool.dll