IO
IO
大致分为三类,标准io,文件io,string
io。下面一张大图表示这几种io的继承方式,常用的三种io流都继承于ios
基类
IO的条件状态
这些IO条件状态用于在执行IO操作时判断当前IO的状态如何从而采取相应的措施
1 | strm::badbit // 流已崩溃 |
基础IO对象的成员如下
1 | strm s; // s为一个IO对象 |
标准IO
1 |
|
特别需要注意io对象不能复制和赋值,可以通过引用。
1 |
|
文件IO
1 |
|
这里一直没有搞懂的一点,用户输入和文件输入这两个的区别。用户输入指的是用户从键盘输入数据,而文件输入指的是从文件输入数据到某处。
这里有两个例子,分别是代表文件io和标准io,他们的最终目标都是一个:将数据送入buffer
中。
1 |
|
所以可以总结下什么是输入和输出。
输入:不管对象如何,都是将这个对象的数据送入程序的
buffer
中,这种操作统称为输入。输出:不管数据来源与何处,只要将数据送入对象中,这种操作统一称为输出。
stringIO
1 | std::istringstream |
常用两个对象,操作和上面两种IO的操作方式一样,只需要介绍下特有的操作
1 | sstream strm; // 创建一个未绑定的stringstream对象 |
文件打开方式
介绍一个名词叫做文件截断,意思就是在进行写文件的操作时,在写结束后,如果文件后面还有内容那么后面的内容全部清除,所以如果要进行写文件操作一般采用app
的方式打开。
文件打开有五种方式:in
,out
,app
,ate
,trunc
,binnary

如果使用out
等模式打开默认是截断文件的
assert函数
assert函数定义在头文件cassert
中,使用方法为
1 | assert(true); |
如果在编译时添加-D NDEBUG
这个选项,则#ifndef
部分的语句就不会输出
常用的5个程序调试名字
- __FILE_: 存放文件名的字符串
- __LINE__: 存放当前行号
- __TIME__: 存放文件编译时间
- __DATE__: 存放文件编译日期
完整代码和测试结果
1 |
|
1 | __FILE__: main.cpp |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.