C++的tie()函数
2016-04-04 14:02
423 查看
http://tech.quarkjoker.com/2011/06/22/C++%E7%9A%84tie()%E5%87%BD%E6%95%B0
今天看C ++ primer 时,看到了ios::tie() 函数。不明白其含义,跟不知道作用。于是上网查了一下。
cplusplus.com 给出的定义是:
ostream* tie ( ) const; //返回指向绑定的输出流的指针。
ostream* tie ( ostream* tiestr ); //将tiestr指向的输出流绑定的该对象上,并返回上一个绑定的输出流指针。
什么意思呢?
就是说对于一个ios(输入输出流)对象,可以把一个输出流和它“绑定”起来。不带参数执行,返回“绑定”的输出流指针;带一个输出流指针作为参数,则重新设置绑定的对象,并返回前任绑定对象(指针)。
但是,什么是“绑定”呢?
比方说,对于下面这个程序:
用linux下watch命令(windows下还不知道有没有什么类似的东西,如果没有就用本办法:手动关掉再打开)实时察看test.txt文件,会发现每当你在终端里敲几个字后按下回车,test.txt文件里的文字就多了几个。
而如果你将代码中标注的那一行注释掉,就会发现,test.txt只有在程序运行结束(linux下按ctrl+d,windows下是ctrl+z结束输入)后才会有东西出现。
这就是“绑定”的效果,每当被“绑定”的对象有出入或输出操作,就会自动刷新“绑定”的对象的缓冲区,以达到实时的效果。
今天看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:"; 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++]字符串流 istringstream 和 ostringstream 的用法
- C/C++—— 在构造函数中调用虚函数能实现多态吗(Vptr指针初始化的过程分析)
- C++:标准IO(输入输出)
- C/C++—— C++编译器是如何实现多态
- c语言中宏定义和函数区别
- C++ vector::resize
- Count Primes
- C++ set_union
- VC++执行多条dos命令方法
- C++ inserter
- 30.C语言结构体对齐访问
- 【算法】蛇形矩阵
- Ugly Number II(求第N个丑数)
- C语言标识符
- C语言关键字
- C++ copy
- 设计模式C++模板方法模式-实际处理交给子类
- 封闭类、友元、this指针、常量对象
- C++11 std::bind std::function 高级使用方法
- C++中的基类和派生类