欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++——流的文件I/O(Input & Output)

程序员文章站 2022-03-19 20:53:49
用流来对文件进行I/O操作,一定要先#include 获取输入 基本框架 ifstream in_stream; in_stream.open("in_st...

用流来对文件进行I/O操作,一定要先#include

获取输入

基本框架

ifstream in_stream;
in_stream.open("in_stream.dat");
...
in_stream.close();

检查输入

在进一步对输入进行操作前应该先判断一下输入文件是否成功打开,成功则继续,否则退出,在这里对输入/输出流对象使用fail 成员函数
//输入流判断
if(in_stream.fail())
    {
        cout << "input error.\n" << endl;
        exit(1);
    }
//输出流判断
if(out_stream.fail())
    {
        cout << "output error.\n" << endl;
        exit(1);
    }

生成输出

基本框架

ofstream out_stream;
out_stream.open(out_stream.dat);
...
out_stream.close();

追加输出(不覆盖已有文件)

流以文件的形式输出的时候默认输出一个新文件——也就是说,如果已经存在一个同名文件,就会被新生成的文件覆盖掉。但有的时候我们需要多次运行来多次采集数据而不覆盖之前的记录,则可以更改成员函数open。
out_stream.open("out_stream.dat",ios::app);
但注意,在加入ios::app 参数之前,一定要先引入

完整代码

#include 
#include 
#include 
using namespace std;
int main()
{

    ifstream in_stream;
    ofstream out_stream;

    in_stream.open("infile.dat");
    if(in_stream.fail())
    {
        cout << "input error.\n" << endl;
        exit(1);
    }
    out_stream.open("outfile.dat",ios::app);



    if(out_stream.fail())
    {
        cout << "output error.\n" << endl;
        exit(1);
    }

    out_stream.precision(3);
    double first, second, third;
    in_stream >> first >> second >> third;
    out_stream << "The sum of the fisrt 3\n" << "numbers in infile.data\n" << "is " << (first + second + third) << endl;
    in_stream.close();
    out_stream.close();
    return 0;
}