我是用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";
最佳答案
注意VC++6.0默认的编译模型是ANSI/MBCS(即TCHAR
是一个char
,CString
是一个序列char
等),而 VC++2005 的默认编译模型是 Unicode(即 TCHAR
是 wchar_t
,CString
实际上是一个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
)使代码比 “魔数(Magic Number)”(如 0x00B5
)更具可读性。
此外,我会将格式字符串(包括“RAMP,µm
”部分)存储在应用程序资源中并从那里加载它,而不是在源代码中构建它。
关于c++ - 导入 VC++2005 时 CString 出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238174/