Ped*_*ino 5 c++ unicode stl stringstream
鉴于以下代码段无法编译:
std::stringstream ss;
ss << std::wstring(L"abc");
Run Code Online (Sandbox Code Playgroud)
我不认为这个会:
std::stringstream ss;
ss << L"abc";
Run Code Online (Sandbox Code Playgroud)
但它确实(至少在VC++上).我猜这是由于以下ostream::operator<<过载:
ostream& operator<< (const void* val );
Run Code Online (Sandbox Code Playgroud)
如果我无意中混合了字符类型,这是否有可能默默地破坏我的代码?
Ste*_*end 11
是的-你需要wstringstream的wchar_t输出.
您可以通过不使用字符串文字来缓解这种情况.如果你试图传递const wstring&给stringstream它,就不会编译,正如你所指出的那样.
如果我无意中混合了字符类型,这是否有可能悄悄地破坏我的代码?
总之:是的,据我所知,没有解决方法。您只会看到指针值的表示形式,而不是字符串,因此这不是潜在的崩溃或未定义的行为,只是输出不是您想要的。