当前位置: 首页 > 文档资料 > C++大学教程 >

11.5 成员函数 read、gcount 和 write 的无格式输入/输出

优质
小牛编辑
129浏览
2023-12-01

调用成员函数 read、write 可实现无格式输入/输出。这两个函数分别把一定量的字节写入字符数组和从字符数组中输出。这些字节都是未经任何格式化的,仅仅是以原始数据形式输入或输出。

例如:

char buffe[] ="HAPPY BIRTHDAY";
cout.write(buffer, 10 );

输出 buffet 的 10 个字节(包括终止 cout 和 << 输出的空字符)。因为字符串就是第一个字符的地址,所以函数调用:

cout.write("ABCDEFGHIJKLMNOPQRSTUVWXYZ",10);

显示了字母表中的前10个字母。

成员函数read把指定个数的字符输入到字符数组中。如果读取的字符个数少于指定的数目,可以设置标志位 failbit(见11.8节)。

成员函数gcount统计最后输入的字符个数。

图 11.15 中的程序演示了类 istream 中的成员函数 read 和 gcount,以及类 ostream 中的成员函数 write。程序首先用函数 read 向字符数组 buffer 中输入20个字符(输入序列比字符数组长),然后用函数 gcount 统计所输入的字符个数,最后用函数 write 输出 buffer 中的字符。

1 // Fig. 11.15: fig11_15.cpp
2 // Unformatted I/O with read, gcount and write.
3 #include <iostream.h>
4
5 int main()
6 {
7 const int SIZE = 80;
8 char buffer[ SIZE ];
9
10 cout << "Enter a sentence:\n";
11 cin.read( buffer, 20 );
12 cout << "\nThe sentence entered was:\n";
13 cout.write( buffer, cin.gcount() );
14 cout << endl;
15 return 0;
16 }

输出结果:

Enter a sentence:
Using the read, write, and gcount member functions
The sentence entered was:
Using the read,write

图 11.15 成员函数 read、gcount 和 write 的无格式 I/O