《C++Primer》第八章:IO库

  1. 类型ifstreamistringstream都是继承自istream
  2. 可以将流作为条件使用,如while(cin>>chr)之类的操作,默认是调用了!s.fail()这个方法判断流是否处于有效状态。
  3. 直接将流作为条件使用也可以。也是判断流是否处于有效状态。一旦一个流发生错误,在其上后续的IO操作都会失败。
  4. 可以使用s.rdstate()获得流的当前状态,返回类型是strm::iostate,可能是strm::badbitstrm::failbitstrm::eofbitstrm::goodbit中的一种。
  5. return或者缓冲区满或者显式endl/flush/ends刷新缓冲区,操纵符unitbuf也可以刷新缓冲区,cerr默认立即刷新。另外当读写流时被关联的流会被刷新,比如cin/cerr关联到cout,读cin、cerr时cout会被立刻刷新。(这是因为考虑到交互式的场景,输入都会和输出关联,使得用户会看到所有输出后才会输入)
  6. 文件流对象可以用open和具体文件关联,close掉后可以重新关联新的文件。同上,open之后使用if(fstream)来检测是否成功打开是一个好习惯。
  1. 一个fstream离开作用域后会自动关闭。
  2. 当我们的工作是对整行文本进行处理,而其他一些工作是处理行内的单个单词或者是单个字符的时候,通常可以使用istringstream。当我们希望逐步构造输出最后一起打印的时候,ostringstream会比较有用。而这需要的头文件是sstream
本站总访问量