鉴于以下代码段无法编译:
std::stringstream ss;
ss << std::wstring(L"abc");
我也不认为这个会:
std::stringstream ss;
ss << L"abc";
但确实如此(至少在 VC++ 上)。我猜这是由于以下 ostream::operator<<
过载:
ostream& operator<< (const void* val );
如果我不小心混合了字符类型,这是否有可能悄悄地破坏我的代码?
请您参考如下方法:
是的 - 您需要 wstringstream
用于 wchar_t
输出。
您可以通过不使用字符串文字来缓解这种情况。如您所述,如果您尝试将 const wstring&
传递给 stringstream
,它将无法编译。