0

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

4

2 回答 2

4

如果为空,则不输出空wchar_t指针:

( str ? ss << str : ss << 0 );

请注意,这不起作用:

ss << ( str ? str : 0 )

由于隐式条件运算符返回类型是其两个表达式的通用类型,因此它仍将返回空wchar_t指针。

于 2012-06-03T19:17:38.410 回答
2

在输出到字符串流之前检查(如已经建议的那样)

if (str == NULL) {
    ss << 0;
} else {
    ss << str;
}
于 2012-06-03T19:21:06.257 回答