繁体   English   中英

std :: stringstream如何在operator <<中处理wchar_t *?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM