我遇到了wstringstream的问题。当我这样做时
std::wstringstream ss;
wchar_t* str = NULL;
ss << str;
应用程序因错误而崩溃
Unhandled exception at 0x53e347af (msvcr100d.dll) in stringstr.exe: 0xC0000005: Access violation reading location 0x00000000.
例如,这很好用:
ss << NULL;
wchar_t* str = L"smth";
ss << &str;
并不总是str有值,有时可能为NULL,当它为NULL时我想将0放入流中。如何解决?
答案 0 :(得分:4)
如果为null,则不输出空wchar_t
指针:
( str ? ss << str : ss << 0 );
请注意,这不起作用:
ss << ( str ? str : 0 )
因为隐式条件运算符返回类型是它的两个表达式的公共类型,所以它仍然会返回一个空wchar_t
指针。
答案 1 :(得分:2)
在输出到stringstream之前检查(如已建议的那样)
if (str == NULL) {
ss << 0;
} else {
ss << str;
}