iostream/fstream中的输入输出流指针的绑定,tie函数的使用。
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iostream/fstream中的输入输出流指针的绑定,tie函数的使用。,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1950字,纯文字阅读大概需要3分钟。
内容图文
![iostream/fstream中的输入输出流指针的绑定,tie函数的使用。](/upload/InfoBanner/zyjiaocheng/1089/dab00fcdd44e4bb1b730231c3f7f05c1.jpg)
为了兼容c语言的输入输出,c++里面采用tie将输入输出流经行绑定,所以cin/cout并不是独立的。当执行cin时,cout同时会被执行。反之亦然。
by defalut,cin is tied to cout,and wcin is tied to wcout。
默认情况下,cin和cout是绑定在一起的,wcin和wcout是绑定在一起的。
也就是说默认情况下,我们执行
int a; cin>>a;
用户输入abcd‘Enter‘
执行的过程是,先将abcd输入到流缓冲区中,然后从缓冲区中输出到a中。
同样
cout<<"Enter a number";
执行的过程是,先将"Enter a number."输入到缓冲区中再从缓冲区中输出到控制台上来。
由此可见,cin和cout其实并不是我们想象中的相反对立的两个函数。相反,这两个函数,其实执行的是同一个过程,都包含输入和输出。(前提是在默认情况下)
正是由于这种情况,当我们遇到数据集超大造成 cin TLE的时候,我们可能会认为这是cin的效率不及scanf的原因。其实是输入缓冲区,flush缓冲区,占用了时间。
接下来介绍一下,相关的库函数tie
看看标准库里面tie函数的定义,there‘s two overloads,两重重载。
<1>basic_ostream<char_type,traits_type>* tie() const;
<2>basic_ostream<char_type,traits_type>* tie(basic_ostream<char_type,traits_type>* tiestr);
第一个重载:returns a pointer to the tied output stream.直接返回一个当前绑定的输出流指针。
第二个重载:ties the object to tiestr and returns a pointer to the stream tied before the call, if any.将当前对象与tiestr流指针绑定,并且返回之前绑定的流指针,如果之前没有绑定其他流指针,则返回NULL。
两个重载返回值都是一个流指针,重载<2>的形参是一个待绑定的流指针。
看下面两个例子
#01、解绑默认的绑定,加快输入输出。
比如下面
using namespace std;
void main() {
int i; cin.tie(&cout); cout<<"Enter a number.";
cin>>i; }
用户输入3‘Enter‘
代码执行的过程是,直接将“Enter a number."输出到控制台上,然后直接将用户输入的3读入到i中。
中间不经过缓冲区。
所以当我们要大量读取数据的时候可以tie函数解绑,来加快数据读取。
#02、指定绑定输入输出流,实现不同的输入输出功能。
1 // redefine tied object 2 #include <iostream> 3 #include <fstream> 4usingnamespace std; 5int main() {
6 ostream *prevstr; 7 ofstream ofs; 8 ofs.open("test.txt"); 9 cout << "tie example:\n"; 10 *cin.tie() << "This is inserted into cout"; 11 prevstr = cin.tie(&ofs); 12 *cin.tie() << "This is inserted into the file"; 13 cin.tie(prevstr); 14 ofs.close(); 15return0; 16 }
将标准输入和文件输出绑定。
代码执行结果:
tie example:
This is inserted into cout
同时生成test文件
This is inserted into the file
这是因为第一个*cin.tie()等价于cout默认绑定的就是cout。
第二个*cin.tie()等价于ofs。
原文:http://www.cnblogs.com/ruxiaobai/p/iostream-fstream_tie.html
内容总结
以上是互联网集市为您收集整理的iostream/fstream中的输入输出流指针的绑定,tie函数的使用。全部内容,希望文章能够帮你解决iostream/fstream中的输入输出流指针的绑定,tie函数的使用。所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。