C++学习笔记(八)
来源:互联网 发布:行知外国语是区重点吗 编辑:程序博客网 时间:2024/06/02 02:50
第八章 IO库
1.iostream 定义了用于读写流的基本对象;fstream定义了读写命名文件的类型;sstream定义了读写内存string对象的类型。
2.头文件 iostream 类型: istream 从流读取数据 ostream 从流写入数据 iostream读写流
头文件 fstream 类型: ifstream 从文件读取数据 ofstream 向文件写入数据 fstream 读写文件
头文件 sstream 类型: istringstream 从string读取数据 ostringstream 向string写入数据 stringstream 读写string
在类型前面加上w则支持使用宽字符。
3.简单来说,继承机制使我们可以声明一个特定的类继承自另一个类。通常可以将一个派生类(继承类)对象当做其基类(所继承的类)对象来使用。
类型ifstream 和 istringstream都继承自istream,类似的ofstream和ostringstream都继承自ostream。
4. 进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象对改变其状态,因此传递和返回的引用不能是const的。
5. 由于IO操作一个不可避免的问题就是可能发生错误,因此代码通常应该在使用一个流之前检查它是否处于良好状态,用简单的while(cin>>word)来实现。
6. 缓冲刷新—数据真正写到输出设备或文件的情况:
(1)程序正常结束,比如main()函数的return语句;
(2)缓冲区慢时,需要刷新缓冲,而后新的数据才能被写入到缓冲区;
(3)使用操作符如endl来显式刷新缓冲区(完成一个换行之后刷新),使用flush(直接刷新),使用ends(输出一个空字符后刷新);
(4)使用操作符unitbuf来清空缓冲区,之后所有输出操作都会立即刷新缓冲区。
(5)一个输出流可能被关联到另一个流,在此情况下,当读写被关联的流时,关联到的流的缓冲区会被刷新。默认情况下,cin和cerr关联到cout。
什么叫刷新缓冲区; C++对缓冲区的理解
7. c++的tie函数。
8. 当我们想要读写一个文件时,可以定义一个文件流对象,并将对象与文件关联起来。
有3种方法: 显然第三种方便。
(1)string name("readme.txt"); ifstream in(name);
(2)string name("readme"); ifstream in(name+".txt");
(3)ifstream in("readme.txt");
或者定义一个空文件流对象,可以使用open来关联:
ifstream in; in.open("readme.txt") ; // open里面的方法也是上面的三种。 ofstream对文件进行写操作用法类似。
如(5)所述,检查流是否成功是一个习惯: if(in) ........
文件操作完成后使用关闭来解除绑定 in.close(); 内无参数。 要想将文件流关联到另一个文件,必须在解除绑定后重新open。
9. 每个文件流都有一个关联的文件模式,比如上面ifstream in("readme.txt") 默认以读方式打开,即ifstream in("readme.txt",in); ofstream则默认写方式 ofstrean out("....",out)
open()也是如此 in.open("....",in);
10.string流。。。。。。。。。。看不懂。。。。。。
- C语言学习笔记(八)--数组
- 《Effective C++》学习笔记(八)
- C语言程序学习(八)笔记
- c语言学习笔记八
- C语言学习笔记<八>
- 学习笔记(八)
- 【黑马程序员】C语言学习笔记之函数(八)
- C语言学习笔记(八)——其他计算机知识
- C学习笔记(八)野指针详解
- C/C++学习笔记八(断言与异常处理)
- C学习笔记之---八皇后算法
- C语言笔记(八)
- J2ME学习笔记(八)
- C++学习笔记(八)
- MySQL学习笔记(八)
- android学习笔记(八)
- java学习笔记(八)
- Spring学习笔记(八)
- ThreadLocal---原理解析
- HTML5新的表单元素
- 工作的一年,学到了什么?
- wait_event_timeout的理解
- K近邻算法
- C++学习笔记(八)
- JavaScript中函数参数的值传递和引用传递
- android studio 设置软件源
- DP (6) -- Best Time to Buy and Sell Stock with Cooldown,Range Sum Query 2D - Immutable
- 如何创建ORACLE大文件表空间
- 上课心得
- Java 中四种代码块:普通代码块、构造块、静态代码块、同步代码块。
- 能源物联网中如何处理上报的大量数据问题的思路分析(题目有点长,但是我不介意它更长)--后续会继续补充
- FreeRTOS移植笔记(一)创建工程模板