Добавление целого числа к 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() );
Другие вопросы по тегам