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)
我哪里错了?
谢谢。
答案 0 :(得分:4)
常规std::ostringstream
不宽。 wstring
希望分配一个宽字符串。
答案 1 :(得分:3)
您不能在变量声明中使用复合赋值。
引入初始值设定项的=
不是赋值运算符,它是声明语法的一部分。你无法替换一些看似相关的令牌。
如果要初始化变量,请使用简单的=
:
std::wstring temp = std::to_wstring( GetValue() );
如果您想进行复合赋值,请在声明后的单独声明中进行:
std::wstring temp;
temp += std::to_wstring( GetValue() );