错误与CString当我导入vc++ 2005



我用vc++ 6.0编写代码,导入到vc++ 2005中。我得到一个模糊的错误与unicode插入现在?

CString s;
s.Format("%frn", (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(即TCHARchar, CStringchar 's的序列,等等),而vc++ 2005的默认编译模型是Unicode(即TCHARwchar_t, CString实际上是CStringW,即wchar_t字符串)。

我只使用Unicode模型(不需要ANSI/MBCS兼容性和TCHAR, _T("...")等),并像这样调整代码:

static const wchar_t microSign = 0x00B5;
CString s;  
s.Format(L"%frn", 
    static_cast<double>(timebTime.time) +
    static_cast<double>(timebTime.millitm) / 1000.0);
s += L"RAMP,"; 
s += microSign;
s += L"m";

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

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

相关内容

  • 没有找到相关文章

最新更新