将整数附加到 std::wstring 会产生错误

Append an integer to std::wstring gives an error

全部,

我使用的是 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)

我哪里错了?

谢谢。

正则std::ostringstream不宽。 wstring 想分配一个宽字符串。

你需要 std::wostringstream

不能在变量声明中使用复合赋值。

引入初始化器的=不是赋值运算符,它是声明语法的一部分。您不能替换一些看似相关的标记。

如果你想初始化一个变量,使用简单的=:

std::wstring temp = std::to_wstring( GetValue() );

如果要进行复合赋值,请在声明后的单独语句中进行:

std::wstring temp;
temp += std::to_wstring( GetValue() );