C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++でファイルを1行ずつ読み込む方法

本記事では、C++を使ってテキストファイルを1行ずつ読み込むプログラムの実装方法を解説します。標準ライブラリの fstream クラスと getline() 関数を組み合わせることで、シンプルかつ効率的にファイルの内容を行単位で処理できます。

入力

ファイル「tpoint.txt」には、あらかじめ次の内容が書き込まれているものとします。

Tutorials point.

出力

Tutorials point.

アルゴリズム

プログラム全体の流れは以下のとおりです。

開始
  fstreamクラスのオブジェクト newfile を作成する。
  open() メソッドを呼び出し、newfile を使って書き込みモードで「tpoint.txt」を開く。
  ファイルが正常に開けた場合:
    ファイルに文字列 "Tutorials point" を書き込む。
    close() メソッドで newfile を閉じる。
  open() メソッドを呼び出し、newfile を使って読み取りモードで「tpoint.txt」を開く。
  ファイルが正常に開けた場合:
    文字列変数 tp を宣言する。
    getline() メソッドで newfile のデータを1行ずつ読み取り、tp に格納する。
    tp の内容を出力する。
  close() メソッドで newfile を閉じる。
終了

コード例

まず書き込みモード(ios::out)でファイルを開いてテキストを保存し、その後読み取りモード(ios::in)で再度開き、getline() を使って1行ずつ読み出して表示します。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
    fstream newfile;
    // 書き込み操作のためにファイルオブジェクトでファイルを開く
    newfile.open("tpoint.txt", ios::out);
    if(newfile.is_open()) // ファイルが開けているか確認
    {
        newfile<<"Tutorials point \n";  // テキストを挿入
        newfile.close();    // ファイルオブジェクトを閉じる
    }
    // 読み取り操作のためにファイルオブジェクトでファイルを開く
    newfile.open("tpoint.txt", ios::in);
    if (newfile.is_open()){   // ファイルが開けているか確認
        string tp;
        // ファイルオブジェクトからデータを読み取り、文字列に格納
        while(getline(newfile, tp)){
            cout << tp << "\n"; // 文字列のデータを出力
        }
        newfile.close(); // ファイルオブジェクトを閉じる
    }
}

ポイント解説

  • fstreamクラス: 読み書き両方のストリーム操作を扱える標準ライブラリのクラスです。モードフラグ(ios::inios::out)によって動作を切り替えます。
  • is_open(): ファイルが正しく開けたかどうかを判定します。エラー防止のため必ずチェックしましょう。
  • getline(): ストリームから1行分のデータを読み取り、std::string に格納します。ファイル末尾に達するとループが自動的に終了します。

出力結果

Tutorials point.
  1. C++で点集合の線対称(ラインリフレクション)を判定するアルゴリズム

    問題概要2次元平面上にn個の点が与えられます。このとき、y軸に平行な直線で全ての点を鏡映(反射)した結果が、元の点集合と完全に一致するような直線が存在するかどうかを判定します。言い換えれば、ある直線を対称軸として全ての点を反転させたとき、反転後の点の集合が元の集合と同一になるかを確認する問題です。例えば、入力が points = [[1,1],[-1,1]] の場合を考えてみましょう。この場合、x = 0 の直線(y軸)を対称軸とすると、点 (1,1) は (-1,1) へ、(-1,1) は (1,1) へと移ります。点集合全体としては変化がないため、出力は true となります。解法のポイン

  2. 【C#入門】テキストファイルを1行ずつ読み込む最速の方法|StreamReader・File.ReadLines・ReadAllLinesの違いを解説

    C#でテキストファイルを1行ずつ読み込む方法は複数あり、代表的なものとしてStreamReader.ReadLine、File.ReadLines、File.ReadAllLinesなどが挙げられます。それぞれの特徴やパフォーマンスの違いを理解しておくことで、用途に応じた最適な実装が可能になります。ここでは、ローカルマシンに以下のような内容のテキストファイル(D:\Demo\Demo.txt)が存在する場合を例に、各方法を見ていきましょう。Hi All!! Hello Everyone!! How are you?StreamReader.ReadLineを使う方法C#のStreamReade