C++程序读写文件:二进制输出与标准输出

3星 · 超过75%的资源 需积分: 31 20 下载量 39 浏览量 更新于2024-09-19 1 收藏 834B TXT 举报
"该资源是关于C++编程的实例,主要展示了如何使用文件输入流类(`ifstream`)和标准输出流类(`ofstream`)进行文件操作。程序首先从名为`abc.txt`的文本文件中读取不定数量的整数,然后以二进制方式将这些整数写入`123.dat`文件。接着,程序从`123.dat`文件的第5个整数开始读取,每行按10个数、每个数的宽度为8且左对齐的方式在控制台上输出。" 在这个C++实例中,关键知识点包括: 1. **文件流操作**: - `ifstream`类用于处理文件输入,它继承自`istream`类,可以读取文件中的数据。 - `ofstream`类用于文件输出,继承自`ostream`类,可以将数据写入文件。 2. **文件打开模式**: - `"abc.txt"`是以文本模式打开,而`"123.dat"`是以二进制模式(`ios::binary`)打开。二进制模式下,文件操作不会进行任何字符转换,更适合存储原始数据。 3. **文件流对象的构造与初始化**: - 使用`ifstream fin("abc.txt", ios::in);`和`ofstream fout("123.dat", ios::binary);`初始化输入和输出流对象,并指定打开模式。 4. **文件流状态检查**: - `if (fin && fout)`用于检查文件是否成功打开。如果文件未打开,通过`!fin`和`!fout`判断并输出错误信息。 5. **数据读写**: - `fin >> temp;`从输入流中读取整数到`temp`变量。 - `fout.write((char*)&temp, sizeof(temp));`将`temp`的值以二进制形式写入输出流。注意,`write()`函数需要传入数据的指针和大小。 6. **文件定位**: - `fin.seekg(4 * sizeof(int));`将文件读取位置移动到第5个整数开始的位置。`seekg()`函数用于改变输入流的当前位置。 7. **循环读取与输出**: - 使用`for`循环读取文件中的整数,每读取10个整数后换行。`cout.width(8);`设置输出宽度为8,保证每个整数左对齐。 8. **异常处理**: - 如果在文件操作过程中出现错误,程序会输出相应的错误信息并关闭文件。 9. **文件关闭**: - `fin.close();`和`fout.close();`确保文件在操作结束后正确关闭。 这个实例展示了C++中基本的文件操作技巧,包括文件的打开、读写、定位以及错误处理,对于理解和实践文件I/O非常有帮助。