美文网首页
c++IO的tie

c++IO的tie

作者: 逆若流溪 | 来源:发表于2019-08-23 22:04 被阅读0次

参考c++中文版282页"刷新输出缓冲区"和"关联输入和输出流"

tie函数是流对象的成员函数,有两个重载版本
1,ostream* tie ( ostream* tiestr );
将tiestr指向的输出流绑定的该对象上,并返回上一个绑定的输出流指针。
2,ostream* tie ( ) const;
如果该对象没有绑定输出流,则返回空指针;
如果该对象通过第一种重载版本绑定了输出流,则返回绑定的该输出流;

案例:转载自https://blog.csdn.net/qq100440110/article/details/51056306

#include <fstream>
using namespace std;
 
int main () {
  ofstream ofs;
  ofs.open ("test.txt");
 
  cin.tie (&ofs); //注释掉这一行试试看
  *cin.tie() << "There will be some text:";
  char c;
  while(cin >> c){
    ofs << c;
  }
 
  ofs.close();
 
  return 0;
}

如果按照完整的代码,会发现每次按下回车键之后都会将本次输入的内容打印到test.txt文件中,而如果去掉作者标注的那行代码之后,会发现只有程序运行正常结束时才会将本次输入的内容全部一次性写到test.txt文件中.
主要原因在于绑定之后每次的读取数据的操作都会刷新相关联的输出流,因此可以实现实时输出.

cin与cout是默认绑定的,,因此,如果注释掉下边这行代码

cin.tie (&ofs); //注释掉这一行试试看

则更下边这行代码中

 *cin.tie() << "There will be some text:";

*cin.tie()返回的是标准的cout,因此会直接在屏幕上打印出"There will be some text:",而将输入文本打印在文件test.txt中

同样的原理也可以解释为什么正常情况下,cout总是可以实时输出cin的内容,而不用等到程序结束

相关文章

  • c++IO的tie

    参考c++中文版282页"刷新输出缓冲区"和"关联输入和输出流" tie函数是流对象的成员函数,有两个重载版本1,...

  • dress code

    Formal: white tie Semi-formal : black tie Informal: loung...

  • TIE

    我想起从前,想起黑暗的日子,有道光从中穿过。我知道那道光叫希望,叫梦想。 你怕黑吗?怕,你能给我照路吗?好,那你照...

  • Tie into

    昨天回去有点困睡着了,没有更现在补上。 今早终于考完了传感器,看试题那刻,感到凉凉。但是还 是坚持答完...

  • Tie cell

    今天要介绍的数字后端概念是Tie cell(钳位单元)。常见的有tie high,tie low两种,分别提供电源...

  • 英语迷你小课堂:2022年7月

    系鞋带 tie one's shoelaces 系上鞋带 Do/Tie up your shoelaces, Ro...

  • Black tie 女伯爵的秘密森林

    Black tie女伯爵的秘密森林 Black Tie ,由从事家居设计 36 年的 Pier Luigi Fri...

  • 黄旦铁观音(黄旦)Tie Guan Yin Tea

    黄旦铁观音(黄旦)Tie Guan Yin Tea 铁观音 TEA(茶):铁观音(Tie Guan Yin ) O...

  • Bow Tie

    『Bow ties are cool, I wear it and I don't care, that's wh...

  • 打卡第126天

    lavatory wound vicious susceptible tie discorder

网友评论

      本文标题:c++IO的tie

      本文链接:https://www.haomeiwen.com/subject/zzsxectx.html