如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件)。程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符。
对ASCII文件的读写操作可以用以下两种方法:
1) 用流插入运算符“<>”输入输出标准类型的数据。“<>”都巳在iostream中被重载为能用于ostream和istream类对象的标准类型的输入输出。由于ifstream和ofstream分别是ostream和istream类的派生类(详情请见:与C++输入输出有关的类和对象),因此它们从ostream和istream类继承了公用的重载函数,所以在对磁盘文件的操作中,可以通过文件流对象和流插入运算符“<>”实现对磁盘 文件的读写,如同用cin、cout和<>对标准设备进行读写一样。
2) 用文件流的put、get、geiline等成员函数进行字符的输入输出,前面已介绍,请查看:用C++流成员函数put输出单个字符、C++ get()函数读入一个字符和C++ getline()函数读入一行字符。
[例13.11] 有一个整型数组,含个元素,从键盘输入个整数给数组,将此数组送到磁盘文件中存放。
#include
using namespace std;
int main( )
{
int a[10];
ofstream outfile("f1.dat",ios::out);//定义文件流对象,打开磁盘文件"f1.dat"
if(!outfile) //如果打开失败,outfile返回值
{
cerr<
exit(1);
}
cout<
for(int i=0;i<10;i++)
{
cin>>a[i];
outfile<
} //向磁盘文件"f1.dat"输出数据
outfile.close(); //关闭磁盘文件"f1.dat"
return 0;
}
运行情况如下:
enter 10 integer numbers:
1 3 5 2 4 6 10 8 7 9 ↙
对程序的几点说明:
1) 程序中用#indude命令包含了头文件fstream,这是由于在程序中用到文件流类 ofstream,而ofstream是在头文件fstream中定义的。有人可能会提出:程序中用到cout, 为什么没有包含iostream头文件?这是由于在头文件fstream中包含了头文件iostream, 因此,包含了头文件fstream就意味着已经包含了头文件iostream,不必重复(当然,多写 一行#include 也不出错)。
2) 参数 ios::out 可以省写。 如不写此项,则默认为ios::out。下面两种写法等价:
ofstream outfile("f1.dat", ios::out);
ofstream outfile("f1.dat");
(3) 系统函数exit用来结束程序运行。exit的参数为任意整数,可用0,1或其他整数。由于用了exit函数,某些老版本的C ++要求包含头文件stdlib.h,而在新版本的C++(如 GCC)则不要求此包含。
4) 在程序中用“cin>>”从键盘逐个读入10个整数,每读入一个就将该数向磁盘文件输出,输出的语句为:
outfile<
这篇博客介绍了如何使用C++对ASCII文件进行读写操作。通过流插入运算符`<>`或文件流的成员函数如`put`、`get`、`getline`进行数据交互。示例代码演示了如何将整型数组写入磁盘文件,并提供了一些关于程序编写的注意事项,包括头文件的包含和文件状态检查。
4892

被折叠的 条评论
为什么被折叠?



