鉴于以下代码段无法编译:

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,它将无法编译。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!