我一直在和其他人的代码一起工作,并注意到在ostringsteam的所有用途中,他们都习惯于明确追加std::ends.
这是我从未做过的事情,从未遇到过问题.
它似乎没有,但应该std::ends在以下代码中有任何区别?
ostringstream message;
message << "Hello world, version " << 2 /* << std::ends ??? */;
printf( "%s\n", message.str().c_str() );
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 10
附加std::ends是无稽之谈,因为这里stringstream的c_str返回空值终止char*.同样是没有的情况下(废弃)strstreams其中附加std::ends是必要的.我相信作者根本不知道这种改变的行为.