我一直在使用其他人的代码,并注意到在ostringsteam的所有用法中,他们习惯明确地附加std::ends
。
这是我从未做过的事情,从未遇到过问题。
它似乎没有,但是std::ends
在以下代码中应该有什么不同吗?
ostringstream message;
message << "Hello world, version " << 2 /* << std::ends ??? */;
printf( "%s\n", message.str().c_str() );
答案 0 :(得分:10)
由于std::ends
的{{1}} stringstream
返回以空值终止的c_str
,因此追加char*
是无稽之谈。对于(现已弃用)strstream
的情况,不的情况也是如此,其中需要附加std::ends
。我相信作者根本不知道这种改变的行为。
答案 1 :(得分:2)
它不应该,c_str()
无论如何返回以NULL结尾的字符串。