码迷,mamicode.com
首页 > 编程语言 > 详细

(转)C++的tie()函数

时间:2018-03-02 14:52:36      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:include   输入输出   参数   上网   class   中标   ctrl   main   ios   

今天看C ++ primer 时,看到了ios::tie() 函数。不明白其含义,跟不知道作用。于是上网查了一下。


cplusplus.com 给出的定义是:

ostream* tie ( ) const; //返回指向绑定的输出流的指针。
ostream* tie ( ostream* tiestr ); //将tiestr指向的输出流绑定的该对象上,并返回上一个绑定的输出流指针。


什么意思呢?

就是说对于一个ios(输入输出流)对象,可以把一个输出流和它“绑定”起来。不带参数执行,返回“绑定”的输出流指针;带一个输出流指针作为参数,则重新设置绑定的对象,并返回前任绑定对象(指针)。

但是,什么是“绑定”呢?

比方说,对于下面这个程序:

#include <iostream>
#include <fstream>
using namespace std;

int main () {
  ofstream ofs;
  ofs.open ("test.txt");

  cin.tie (&ofs); //注释掉这一行试试看
  *cin.tie() << "There will be some text:";   //等同于 ofs << "There will be some text";
  char c;
  while(cin >> c){
    ofs << c;
  }

  ofs.close();

  return 0;
}

  

用linux下watch命令(windows下还不知道有没有什么类似的东西,如果没有就用本办法:手动关掉再打开)实时察看test.txt文件,会发现每当你在终端里敲几个字后按下回车,test.txt文件里的文字就多了几个。
而如果你将代码中标注的那一行注释掉,就会发现,test.txt只有在程序运行结束(linux下按ctrl+d,windows下是ctrl+z结束输入)后才会有东西出现。
这就是“绑定”的效果,每当被“绑定”的对象有出入或输出操作,就会自动刷新“绑定”的对象的缓冲区,以达到实时的效果

(转)C++的tie()函数

标签:include   输入输出   参数   上网   class   中标   ctrl   main   ios   

原文地址:https://www.cnblogs.com/lanzhizui/p/8492345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!