C+--ストリームのファイルI/O(Input&Output)

4703 ワード

ストリームでファイルをI/O操作するには、必ず#include 入力の取得
基本フレームワーク
ifstream in_stream;
in_stream.open("in_stream.dat");
...
in_stream.close();

入力の確認
  • 入力をさらに操作する前に、入力ファイルが正常に開くかどうかを判断し、成功すれば続行し、そうでなければ終了し、ここではfailメンバー関数
  • を使用する.
    //     
    if(in_stream.fail())
        {
            cout << "input error.
    "
    << endl; exit(1); }
    //     
    if(out_stream.fail())
        {
            cout << "output error.
    "
    << 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 "iostream"
    #include "fstream"
    #include "cstdlib"
    using namespace std;
    
    int main(int argc, char const *argv[])
    {
        char In_File_Name[16],Out_File_Name[16];
        ifstream In_Stream;
        ofstream Out_Stream;
    
        cout << "I will sum three numbers taken from an input" << endl
             << "file and write the sum to an output file" << endl;
        cout << "Enter the input file name(maximum of 15 characters):" << endl;
        cin >> In_File_Name;
        cout << "Enter the output file name(maximum of 15 characters):" << endl;
        cin >> Out_File_Name;
        cout << "I will read numbers from the file"
             << In_File_Name << " and" <"place the sum in the file "
             << Out_File_Name << endl;
    
        In_Stream.open(In_File_Name);
        if(In_Stream.fail())
        {
            cout << "Input file opening error!" << endl;
            exit(1);
        }
    
        Out_Stream.open(Out_File_Name);
        if(Out_Stream.fail())
        {
            cout << "Output file opening error!" << endl;
            exit(1);
        }
    
        int first,second,third;
        In_Stream >> first >> second >> third;
        Out_Stream << "The sum of input is " << (first + second + third) << endl;
    
        In_Stream.close();
        Out_Stream.close();
    
        cout << "Programme run successfully!" << endl;
        return 0;
    }