Добавление целого числа к std::wstring дает ошибку
ВСЕ,
Я использую MSVC 2010 и у меня проблема с темой.
Используя следующий код:
int GetValue() {return m_int;};
std::wstring temp += std::to_wstring( GetValue() );
выдает ошибку:
ambiguous call to overloaded function
1> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(771): could be 'std::wstring std::to_wstring(long double)'
1> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(762): or 'std::wstring std::to_wstring(_ULonglong)'
1> c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(753): or 'std::wstring std::to_wstring(_Longlong)'
1> while trying to match the argument list '(int)'
Используя следующий код:
ostringstream ostr;
ostr << GetValue();
std::wstring temp += ostr.str();
выдает следующую ошибку:
error C2679: binary '+=' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)
Где я не прав?
Спасибо.
2 ответа
Решение
Регулярный std::ostringstream
не широкий wstring
хотел бы получить широкую строку.
Тебе понадобиться std::wostringstream
Вы не можете использовать составное присваивание в объявлении переменной.
=
Представление инициализатора не является оператором присваивания, это часть грамматики для объявлений. Вы не можете заменить некоторые, казалось бы, связанные токены.
Если вы хотите инициализировать переменную, используйте простой =
:
std::wstring temp = std::to_wstring( GetValue() );
Если вы хотите сделать составное присваивание, сделайте это в отдельной инструкции после объявления:
std::wstring temp;
temp += std::to_wstring( GetValue() );