【发布时间】:2012-05-11 19:29:46
【问题描述】:
以下有什么区别
stringstream a;
stringstream b;
a << "hi";
b << "there";
a << " " << b.rdbuf(); 或 a << " " << b.str(); 或 a << " " << b.str().c_str();
我一直在使用 rdbuf()。我确实注意到 C++ 参考中提到 stringstream::rdbuf:
请注意,对于任何成功构造的 istringstream 对象,此 指针永远不会为 NULL,即使缓冲区字符串为空。
我认为这意味着 rdbuf() 不会返回 NULL?我不能通过NULL。我有过这样的错误char *array = NULL; a << array;。如果 stringstream b 为空,那么在执行a << b.rdbuf() << "some text" 时是否定义了行为?在那种情况下,rdbuf 返回的第一个字符不会有 eof 特征,因此不会附加 b 中的任何内容吗?
谢谢
【问题讨论】:
-
旁白:cplusplus.com 不是“ C++ 参考”,而是“a C++ 参考”。为了正确起见,许多人更喜欢cppreference.com。当然, 参考是 ISO C++ 标准,无论是 2003 还是 2011 版本。
-
显而易见的
a << " " << b;呢? -
@moooeeeep 你不能那样追加字符串流。
-
当然,只是检查是否编译,而不是是否产生预期的结果。
标签: c++ stringstream