C ++ wstringstream<<空值

时间:2012-06-03 19:15:36

标签: c++ stream null wchar-t wstring

我遇到了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放入流中。如何解决?

2 个答案:

答案 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;
}