检查是否已写入给定的ostream对象

Arm*_*yan 4 c++ iostream c++11

我可以查询一个ostream对象是否已被写入?对于一个ostringstream人可以使用

if(!myOssObject.str().empty())
Run Code Online (Sandbox Code Playgroud)

一般情况如何,例如a ofstreamcoutor cerr

mas*_*oud 5

总的来说没有

您可以通过以下方式找出在刷新(发送缓冲数据)之前写入多少个char(或其他内容)tellp():

返回当前关联的streambuf对象的输出位置指示符.

cout << "123";

if (cout.tellp() > 0)
{
    // There is some data written
}
Run Code Online (Sandbox Code Playgroud)

刷新后,这些输出流将忘记它们写的内容但是最后的状态标志.

如果输出设备是实时的并且没有缓冲任何东西,tellp则无济于事.