标准输出流

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
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
int main(){
char c;
while(!cin.eof()) //eof()为假表示未遇文件结束符
if((c=cin.get())!=' ') //检查读入的字符是否空格字符
cout.put(c);
return 0;
}

运行结果:

1
2
C++ is interesting(输入字符串)
C++isinteresting(把其中非空格字符输出)

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个字符,或在遇到指定的终止字符时提前结束

对数据文件的操作与文件流

文件流与文件流对象

文件流本身不是文件,而只是以文件为输入输出对象的流。若要对磁盘文件输入输出,就必须通过文件流来实现。

文件操作的文件类:

  1. ifstream类,是从istream类派生的。用来支持从磁盘文件的输入。
  2. ofstream类,是从ostream类派生的。用来支持从磁盘文件的输出。
  3. fstream类,是从iostream类派生的。用来支持对磁盘文件的输入输出。

文件的打开与关闭

1.打开磁盘文件

(1)调用文件流的成员函数open。
一般形式:

1
文件流对象.open(磁盘文件名,输入输出方式);

(2)在定义文件流对象是指定参数
例:

1
ostream outfile ("f1.dat",ios::out);

2.关闭磁盘文件

1
outfile.close();

对二进制文件的操作

1.用成员函数read和write读写二进制文件
原型为:

1
2
istream& read(char *buffer,int len);
ostream& write(const char *buffer,int len);

2.与文件指针有关的流成员函数
在磁盘文件中有一个文件读写位置标记(简称文件位置标记或文件标记),来指明当前进行读写的位置。在从文件输入时每读入一个字节,该位置就向后移动一个字节。在输出时每向文件输出一个字节,位置标记也向移动一个字节,随着输出文件中字节不断增加,位置不断后移。对于二进制文件,允许对位置标记进行控制,使它使用户的意图移动到所需的位置,以便在该位置上进行读写。

字符串流

1.建立输出字符串流对象
原型:

1
ostrstream::ostrstream(char *buffer,int n,int mode=ios::out);

2.建立输入字符串流对象
原型:

1
2
istrstream::istrstream(char *buffer);
istrstream::istrstream(char *buffer,int n);

3.建立输入输出字符串流对象
原型:

1
strstream::strstream(char *buffer,int n,int mode);