ostringstream和结束

时间:2009-09-02 12:14:01

标签: c++ string stream

我一直在使用其他人的代码,并注意到在ostringsteam的所有用法中,他们习惯明确地附加std::ends

这是我从未做过的事情,从未遇到过问题。

它似乎没有,但是std::ends在以下代码中应该有什么不同吗?

ostringstream message;
message << "Hello world, version " << 2 /* << std::ends ??? */;
printf( "%s\n", message.str().c_str() );

2 个答案:

答案 0 :(得分:10)

由于std::ends的{​​{1}} stringstream返回以空值终止的c_str,因此追加char*是无稽之谈。对于(现已弃用)strstream的情况,的情况也是如此,其中需要附加std::ends。我相信作者根本不知道这种改变的行为。

答案 1 :(得分:2)

它不应该,c_str()无论如何返回以NULL结尾的字符串。