在std :: wstring中附加一个整数会产生错误

时间:2017-07-12 23:41:03

标签: c++ visual-studio-2010 wstring

ALL,

我正在使用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 个答案:

答案 0 :(得分:4)

常规std::ostringstream不宽。 wstring希望分配一个宽字符串。

您需要std::wostringstream

答案 1 :(得分:3)

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

引入初始值设定项的=不是赋值运算符,它是声明语法的一部分。你无法替换一些看似相关的令牌。

如果要初始化变量,请使用简单的=

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

如果您想进行复合赋值,请在声明后的单独声明中进行:

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