频道栏目
读书频道 > 软件开发 > C++ > C++高级编程(第2版)
15.3.2 将流连接在一起
2012-10-17 11:24:58     我来说两句
收藏   我要投稿

本文所属图书 > C++高级编程(第2版)

C++是当今最流行的高级程序设计语言之一,常用于编写性能卓越的企业级面向对象程序,如游戏或大型商业软件。但一个无法规避的事实是:C++语法纷繁复杂,学习难度较大。如何才能化繁为简,全面系统地快速掌握C++知...  立即去当当网订购

任何输入和输出流之间都可以建立连接,从而实现“访问时刷新”的行为。换句话说,当从输入流请求数据的时候,连接的输出流会自动刷新。这种行为可用于所有流,但是对于互相可能存在依赖关系的文件流来说特别有用。

通过tie()方法完成流的连接。要将输出流连接至一个输入流,对输入流调用tie()方法,并且传入输出流的地址。要解除连接,传入nullptr。

下面的程序将一个文件的输入流连接至一个完全不同的文件的输出流。您可以连接至同一个文件的输出流,但是双向I/O(详见稍后的描述)可能是实现同时读写同一个文件的更优雅的方式。

ifstream inFile("input.txt");
ofstream outFile("output.txt");
// Set up a link between inFile and outFile.
inFile.tie(&outFile);
// Output some text to outFile. Normally, this would
// not flush because std::endl was not sent.
outFile << "Hello there!";
// outFile has NOT been flushed.
// Read some text from inFile. This will trigger flush()
// on outFile.
string nextToken;
inFile >> nextToken;
// outFile HAS been flushed.

代码取自tie\tie.cpp

在ostream基类上定义flush()方法,因此可将一个输出流连接至另一个输出流:

outFile.tie(&anotherOutputFile);

这种关系意味着:每次写入一个文件的时候,发送给另一个文件的缓冲数据会被写入。可以通过这种机制保持两个相关文件的同步。

这种流连接的一个例子是cout和cin之间的连接。每当从cin输入数据的时候,cout都会自动刷新。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:15.3.1 通过seek()和tell()在文件中转移
下一篇:15.4 双向I/O
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站