Я написал код на 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
) делает код более читабельным, чем «магическое число» лайк 0x00B5
,
Более того, я бы сохранил строку формата (включая «RAMP,µm
«часть) в ресурсах приложения и загрузите его оттуда вместо создания его в исходном коде.
Других решений пока нет …