[英]How does std::stringstream handle wchar_t* in operator<<?
鉴于以下代码段无法编译:
std::stringstream ss;
ss << std::wstring(L"abc");
我不认为这个会:
std::stringstream ss;
ss << L"abc";
但它确实(至少在VC ++上)。 我猜这是由于以下ostream::operator<<
overload:
ostream& operator<< (const void* val );
如果我无意中混合了字符类型,这是否有可能默默地破坏我的代码?
是的 - wchar_t
输出需要wstringstream
。
您可以通过不使用字符串文字来缓解这种情况。 如果你尝试将const wstring&
传递给stringstream
,它将无法编译,正如你所指出的那样。
如果我无意中混合了字符类型,这是否有可能默默地破坏我的代码?
总而言之:是的,并且没有我知道的解决方法。 您将只看到指针值的表示而不是字符串,因此它不是潜在的崩溃或未定义的行为,只是输出不是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.