注:图片来自于博客 http://blog.163.com/hbu_lijian/blog/static/126129153201201710456994/

  fstream 中IO对象常用的是iftream(文件输入流) ,ofstream(文件输出流),用来读写文件。

  最近工程中用到socket 接收收据,接收到的数据是一个图像,接收完之后用于打印,由于图像接收完整之后才能打印。 一开始我就想建立一个文件保存数据,等保存完毕之后在打开一个文件,读入数据流然后用于打印。结果发现在大规模的接收文件时候效率很低。

  我在想是否可以既有输入又有输出特性,我想到了管道。但有觉得不合适。我不可能为每一个文件都去建立一个管道。而且管道占用内核空间。自信查看IO发现输入输出双向IO。写测试代码如下:      

    fstream fs;fs.open("test.txt",ios::binary|ios::out|ios::in); //|ios::out);if (!fs.good()){return -1;}char buf[1024] = {"wxr test shuru shu chu liu de hao huai"};fs.write(buf,strlen(buf));fs.flush();char buf2[1024] = {0};fs.seekg(ios::beg,0);fs.read(buf2,strlen(buf));fs.close();return 0;

  惊奇发现写入和读出都行,只是在写完之后读取的时候将文件指向开始。 最后我的问题如愿解决。  

  深思:只考虑线程间使用管道通信。这个类有管道的特性。又有管道所不具备的优势。只要做好同步  一个线程写数据(文件末尾) , 一个线程读数据(文件开始),读取时候可以检查数据的完整性在做读取操作,因为是文件所以数据不会丢失,不像管道读取之后数据丢失。 所以在线程间通信尤其数据量大的时候我觉得可以采用该类。

  

转载于:https://www.cnblogs.com/wolfrickwang/p/3200979.html

鲜为人知的C++ IO fstream流相关推荐

  1. C++之文件IO操作流

    C++之文件IO操作流 前两节介绍了C++的IO流类库,标准设备IO操作流中部分预定义流对象的成员函数以及IO格式控制.那今天我将继续介绍关于C++中的流操作内容--文件IO操作流fstream.并会 ...

  2. C++之 文件IO操作流

    关于C++中的流操作内容--文件IO操作流fstream.并会着重讲解C++是如何对文件进行操作的. 文件指存放在外部介质上的数据的集合.大家都知道操作系统是以文件为单位来对数据进行管理的.因此如果你 ...

  3. JAVA SE学习day_05: IO与流操作

    一.IO与流 以程序为主体,input(输入)是读.获取.使用输入流的过程,output(输出)是写.发送的过程. JAVA IO 标准的输入与输出 JAVA IO将读和写按照方向划分为: 输入:用于 ...

  4. Java IO: 字符流的Buffered和Filter

    作者: Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader.B ...

  5. Java IO: 字符流的Piped和CharArray

    转载自   Java IO: 字符流的Piped和CharArray 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相 ...

  6. C++ fstream流的eof()函数多读一行的问题

    最近帮老师带C++的课程设计,很多同学在使用很多fstream流的eof()函数进行 while(!readfile.eof()){readfile>>x;} 时,会出现将最后一行数据读两 ...

  7. java io 缓冲流_记忆系列-Java IO的缓存输入输出流(高效流)

    2019-09-02今天是周一,应该是学校升国旗开学典礼的一天吧~ 然而垃圾的我还是没有找到工作,大专狗是真的没用~简历也不会看你的呀~ 在之前我自己也mark了字节和字符的流,但是呢读取数据量比较大 ...

  8. java io文件流序列化_Java——Properties集合,Object序列化流与反序列化流,打印流,commons-IO文件工具类...

    一.properties集合 集合对象Properties类,继承Hashtable,实现Map接口,可以和IO对象结合使用,实现数据的持久存储. 特点: Hashtable的子类,map集合中的方法 ...

  9. C++ Primer 5th笔记(8)chapter8 类:IO库-流的缓冲区

    1. 介绍 • 每个输出流都管理一个缓冲区,用来保存程序读写的数据 • 操作系统就可以将程序的多个输出操作组合成单一的系统级写操作(提升性能,设备的写操作很耗时) 2. 缓冲区类型:全缓冲.行缓冲和不 ...

最新文章

  1. 为什么每家公司都需要协作工具?
  2. C 标准库 - assert.h
  3. 计算机组成原理课设移位,计算机组成原理课设(多寄存器减法、右移位、输入输出、转移指令实验计算机设计)...
  4. 让Windows2008R2也能进入手柄设置(游戏控制器设置)
  5. linux挂载新硬盘
  6. redis常用数据类型的场景,你真的用对了么?
  7. 连接真机开发安卓(Android)移动app MUI框架——混合式开发(二) 带你项目开发(最新版)
  8. (转)javascript 从数组中删除指定值(不是指定位置)的元素
  9. 关于 用git clone 命令时报错RPC failed; curl 56 Recv failure....’ 的解决办法
  10. 关于travis scott的网名_小仙女可爱单纯的网名
  11. tcp checksum 0xffff instead of 0x0000 see rfc 1624
  12. 阿里云CDN加速和全站加速DCDN区别及如何选择
  13. 华为HCIP认证对于大学生有没有用?毕业后有帮助吗?
  14. RuntimeError: Attempting to deserialize object on CUDA device 3 but torch.cuda.device_count() is 1.
  15. 静态网页如何上传附件
  16. 各个 .NET 平台的 UI 框架比较
  17. 如何解决MacOS Big Sur,打印错误:ERROR invalidcontent?
  18. java 淘口令_淘口令解析丶Java教程网-IT开发者们的技术天堂
  19. 【MySQL开启密码复杂度】
  20. python下载文件损坏_四种方法 恢复损坏的Excel文档

热门文章

  1. linux 为开发板添加板级文件config.h
  2. windows7环境下的http-server的问题 排查
  3. 【剑指Offer】从尾到头打印链表
  4. 《Tensorflow实战》之6.3VGGnet学习
  5. 最全的MySQL基础【燕十八传世】
  6. 如何在MyEclipse中将项目部署Tomcat
  7. Oracle新建用户赋只读某几张表的权限
  8. atitit.ajax bp dwr 3.的注解方式配置使用流程总结.....
  9. 详解结构体、类等内存字节对齐
  10. phpstorm 2017.1.3编辑远程项目