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

C++でファイルの内容を単語ごとに読み込む方法

この記事では、C++を使用してテキストファイルの内容を単語ごとに読み込む方法を解説します。実装は非常にシンプルで、ファイル入力ストリーム(fstream)を使うだけで実現できます。

基本的な流れは以下のとおりです。まず、ファイル名を指定してファイルストリームでファイルを開きます。次に、抽出演算子(>>)を使って単語を1つずつ読み取り、wordという文字列変数に格納します。最後に、読み取った単語を順番にコンソールへ出力していきます。

C++の>>演算子は、デフォルトで空白文字(スペース・改行・タブなど)を区切りとして自動的に分割してくれるため、特別な文字列処理を書かなくても単語単位の読み込みが可能です。

アルゴリズム

read_word_by_word(filename)

begin
    file = filename を使ってファイルを開く
    while file から新しい単語を読み込める間、繰り返す
        読み込んだ単語をコンソールに出力する
    done
end

使用するファイル(test_file.txt)

This is a test file. There are many words. The program will read this file word by word

サンプルコード

#include<iostream>
#include<fstream>
using namespace std;

void read_word_by_word(string filename) {
    fstream file;
    string word;
    file.open(filename.c_str());
    while(file >> word) { // 単語を1つずつ読み込んで出力
        cout << word << endl;
    }
    file.close();
}

main() {
    string name;
    cout << "Enter filename: ";
    cin >> name;
    read_word_by_word(name);
}

実行結果

Enter filename: test_file.txt
This
is
a
test
file.
There
are
many
words.
The
program
will
read
this
file
word
by
word

コードのポイント

  • while(file >> word):この条件式は、ファイルから単語を正常に読み込めた場合は真を返し、ファイル末尾に達すると偽を返します。そのため、ループが自動的に終了します。
  • file.close():読み込みが完了したら、必ずファイルを閉じてリソースを解放しましょう。
  • 区切りの仕組み>>演算子は空白文字を区切りとして扱うため、句読点(「.」など)は単語の一部としてそのまま出力される点に注意してください。
  1. C++プログラムにおける二分探索(バイナリサーチ)の基本と実装

    二分探索(バイナリサーチ)とは二分探索は「半区間探索」「対数探索」「バイナリチョップ」とも呼ばれる検索アルゴリズムで、ソート済みの配列の中から目的の値が存在する位置を効率的に見つけ出します。基本的な仕組みは非常にシンプルです。まず、探したい値(ターゲット値)を配列の中央の要素と比較します。一致しなかった場合は、ターゲット値が存在し得ない半分を丸ごと排除し、残りの半分に対して同様の比較を繰り返します。この「中央との比較」と「範囲の絞り込み」を続け、ターゲット値が見つかるか、検索範囲が空になる(=配列にその値が存在しない)かのどちらかで処理が終了します。アイデア自体は簡単ですが、正しく実装するには

  2. C++でテキストファイルを読み込む方法を徹底解説【fstreamの使い方】

    本記事では、C++を使ってテキストファイルを読み込む方法を、サンプルコードとアルゴリズム付きでわかりやすく解説します。ファイル入出力の基本である fstream クラスの使い方をマスターしましょう。 前提条件(入力) あらかじめ「tpoint.txt」というテキストファイルを作成し、初期内容として以下の文字列を書き込んでおきます。 Tutorials point. 実行結果(出力) プログラムを実行すると、ファイルから読み込んだ内容が画面に表示されます。 Tutorials point. アルゴリズム 処理の流れは以下の通りです。 fstream クラスのオブジェクト newfile を作成