C++教程(七)——输入输出流
标准输出流
cerr流对象
ceer流对象是标准出错信息流。ceer的作用是想标准出错设备输出相关出错信息。
clog流对象
clog流对象也是标准出错信息流,它与ceer的作用相同,都是在终端显示器上显示出错信息。它们间的区别是:ceer是不经缓冲区直接向显示器上输出有关信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇到endl时向显示器输出。
标准输入流
用于字符输入的流成员函数
1.用get函数读入一个字符
(1)不带参数的get函数:cin.get()
(2)有一个参数的get函数:cin.get(ch)
(3)有三个参数的get函数:cin.get(字符数组,字符个数n,终止字符) 或 cin.get(字符指针,字符个数n,终止字符)
2.用成员函数getline函数读入一行字符
1 | cin.getline(字符数组(或字符指针),字符个数n,终止标志字符) |
istream类的其他成员函数
1.eof函数
1 |
|
运行结果:
1 | C++ is interesting(输入字符串) |
2.peek函数
1 | c=cin.peek; |
peek函数的作用是观测下一个字符,但只是观测,指针任停留在当前位置,如果要观测的字符是文件结束符,而函数值是EOF(即-1)
3.putback函数
1 | cin.putback(ch); |
其作用是将前面用get或getline函数从输出流中读取的字符ch返回到输入流,插入到当前指针位置,以供后面读取
4.ignore函数
1 | cin.ignore(n,终止字符) |
作用是跳过输入流中n个字符,或在遇到指定的终止字符时提前结束
对数据文件的操作与文件流
文件流与文件流对象
文件流本身不是文件,而只是以文件为输入输出对象的流。若要对磁盘文件输入输出,就必须通过文件流来实现。
文件操作的文件类:
- ifstream类,是从istream类派生的。用来支持从磁盘文件的输入。
- ofstream类,是从ostream类派生的。用来支持从磁盘文件的输出。
- fstream类,是从iostream类派生的。用来支持对磁盘文件的输入输出。
文件的打开与关闭
1.打开磁盘文件
(1)调用文件流的成员函数open。
一般形式:
1 | 文件流对象.open(磁盘文件名,输入输出方式); |
(2)在定义文件流对象是指定参数
例:
1 | ostream outfile ("f1.dat",ios::out); |
2.关闭磁盘文件
1 | outfile.close(); |
对二进制文件的操作
1.用成员函数read和write读写二进制文件
原型为:
1 | istream& read(char *buffer,int len); |
2.与文件指针有关的流成员函数
在磁盘文件中有一个文件读写位置标记(简称文件位置标记或文件标记),来指明当前进行读写的位置。在从文件输入时每读入一个字节,该位置就向后移动一个字节。在输出时每向文件输出一个字节,位置标记也向移动一个字节,随着输出文件中字节不断增加,位置不断后移。对于二进制文件,允许对位置标记进行控制,使它使用户的意图移动到所需的位置,以便在该位置上进行读写。
字符串流
1.建立输出字符串流对象
原型:
1 | ostrstream::ostrstream(char *buffer,int n,int mode=ios::out); |
2.建立输入字符串流对象
原型:
1 | istrstream::istrstream(char *buffer); |
3.建立输入输出字符串流对象
原型:
1 | strstream::strstream(char *buffer,int n,int mode); |