第8章 IO类
8.1 IO类
iostream istream, wistream从流中读取数据
ostream, wostream
iostream, wiostream读写流
fstream ifstream, wifstream从文件中读取数据
ofstream, wofstream
fstream, wfstream读写文件
sstream istringstream, wistringstream从string中读取数据
ostringstream, wostringstream
stringstream, wstringstream读写string
为了支持宽字符wchar_t,所有的类型和函数只要以w开始就行。例如:wcin、wcout、wifstream。
8.1.1 IO对象无拷贝或赋值
ofstream out1, out2;
out1=out2;//错误,不能赋值和拷贝
由于不能赋值拷贝,所以不能将形参和返回值设置为流类型,通常必须使用引用方式传递和返回流。而且读写IO对象会改变对象状态,所以不能是const。
8.1.2 流的状态
可以通过流对象的rdstate成员函数返回一个iostate类型的值,表征流的当前状态。
- badbit,流崩溃
- failbit,IO操作失败
- eofbit,文件尾
- goodbit,没有错误
使用setstate函数可以将一个iostate的状态值设置为流的状态,对于已经有错误的流,使用good函数仍返回false。
使用无参的clear函数复位所有错误标识,执行clear()后,调用good返回true.
可能用到的函数:eof、fail、bad、good
8.1.3 管理输出缓冲
Endl可以完成换行,并刷新缓冲区。
cout << unitbuf; //所有输出操作都会立即刷新缓冲区
cout << nounitbuf; //将缓冲区刷新任务交给系统
将输入流关联到输出流
使用tie函数可以讲一个输出流,关联到输入流,并返回原来关联的输出流。
cin.tie(&cout);
不带参数的tie函数返回输入流关联的输出流。
8.2 文件输入输出
fstream
fstream fstrm(filePath);
fstream fstrm;
fstrm.open(filePath, mode);
fstrm.is_open();//检验是否成功打开是个好习惯
fstrm.close();
当一个fstream对象离开作用域时,与之关联的文件自动关闭。
Mode
只读:in
只写:out
每次写操作前定位到文件尾部:app
打开文件后定位到文件尾部:ate
截断文件:trunc
二进制方式进行IO:binary
注意:
- 每次调用open,都需要重新制定文件模式,否则为默认默认。
- out打开文件,文件从开头截断,为保留文件中的内容,应该同时指定为app
- 设定trunc,必须设定out:ofstream::out | ofstream::trunc
- 设定app,不能有trunc
8.3 string流
<sstream>头文件中
sstream strm;//未绑定的stringstream对象
sstream strm(s);//保存string s的一个拷贝
strm.str();//返回strm保存的string拷贝
strm.str(s);//将s拷贝到strm中,返回void
istringstream
将string类型通过istringstream当做流进行处理。
ostringstream
将其他流写入到ostringstream流中,可以相当于向string添加字符。
第8章 IO类的更多相关文章
- File类与常用IO流第四章——IO字节流
一切文件在存储时,都是以二进制数字的形式保存的,都是一个一个字节.无论使用什么样的流对象,底层传输的始终是二进制数据. 字节输出流 OutputStream java.io.OutputStream ...
- 第 8 章 IO库
第 8 章 IO库 标签: C++Primer 学习记录 IO库 第 8 章 IO库 8.1 IO类 8.2 文件输入输出 8.1 string流 8.1 IO类 IO对象无拷贝或赋值,因此不能将形参 ...
- 第15章 LinkedList类(暂无)
第15章 LinkedList类 LinkedList类是
- 第9章 Java类的三大特性之一:继承
1.什么是继承 子类继承父类就是对父类的扩展,继承时会自动拥有父类所拥有的处private之外的所有成员作用:增加代码复用语法格式: class 子类名 extends 父类名{…………}第9章 Ja ...
- 第8章 Java类的三大特性之一:封装
1.什么是封装 1.1概念 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问.主要是类的属性 1.2好处 a.只能通过规定的方法访问数据b.隐藏类 ...
- C++的那些事:流与IO类
1.流的概念 "流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流.C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存) ...
- C++ Primer 5th 第8章 IO库
IO类对象不允许进行拷贝操作. IO类中定义后一些函数和标志,可以用于访问和操作流的状态. 一旦流发生错误,后续IO操作都是失败的. 读写IO对象会改变IO对象的状态. 每个输出流都管理一个缓冲区. ...
- 设计模式 - 装饰者模式(Decorator Pattern) Java的IO类 用法
装饰者模式(Decorator Pattern) Java的IO类 用法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26716 ...
- Java基础知识二次学习--第六章 常用类
第六章 常用类 时间:2017年4月26日16:14:49~2017年4月26日16:56:02 章节:06章_01节~06章_06节 视频长度:20:57+1:15+8:44+1:26+11:2 ...
随机推荐
- review backpropagation
The goal of backpropagation is to compute the partial derivatives ∂C/∂w and ∂C/∂b of the cost functi ...
- DiscreteFrechetDist
计算离散的frechet 距离,通过计算两条曲线之间的点的距离,将两条曲线上的点按照距离以及曲线的趋势进行配对,最后根据这些配对的距离选出最后的离散frechet距离(compute discrete ...
- Delphi xe6 android Popup控件的使用
1.拖放Label.button和popup控件到form 2.在structure将button1和label1拖到popup1上,然后调整布局就可以 Popup有几个重要的属性: 1.Placem ...
- maven-排除传递依赖-exclusions
在maven项目中引用dubbo的maven依赖的时候会引入dubbo中传递依赖的spring的依赖包如下: <!-- dubbo相关的jar包 --> &l ...
- BootStrap母版页布局.子页面布局.BootstrapTable.模态框.警告框.html导出tabl生成Excel.HTML生成柱图.饼图.时间控件中文版
如上就是很多后台管理系统的母版页布局. 左边一列模板.上面一列系统标识. 空白处充填子页面 以ASP.NET MVC为基础 引入bootstrap.js.bootstrap.css body: < ...
- 工欲善其事——Sublime Text
一直在找mac下顺手的代码编辑器,要求能方便地查找和编辑,最好能再集成调试,最后选择了sublime.用了一段时间emacs,但是学习曲线过于陡峭.尤其是眼下的要务是啃代码时,玩弄emacs有点舍本逐 ...
- hdu2328(后缀数组 + 二分)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2328 题意: 求 n 个串的字典序最小的最长公共子串 思路: 本题中单个字符串长度不超过 200, ...
- CENSORING——AC 自动机
题目 [题目描述] FJ 为它的奶牛订阅了很多杂志,balabala.......,其中有一些奶牛不宜的东西 (比如如何煮牛排). FJ 将杂志中所有的文章提取出来组成一个长度最多为 $ 10^5 $ ...
- 20.包含min函数的栈
题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路分析: 设置两个栈,一个push,一个放置最小元素. 代码: impor ...
- 02 Django web开发-html简介
软件开发和网络 HTML是用于创建网页的标准标记语言 -HTML指的是超文本标记语言 -HTML不是一种编程语言,二十一种标记语言 -是用来描述网页的一种语言 -HTML描述使用标记的网页的结构 -是 ...