C++でifstreamを使用してファイルを1行ずつ読み取る 質問する

C++でifstreamを使用してファイルを1行ずつ読み取る 質問する

file.txt の内容は次のとおりです。

5 3
6 4
7 1
10 5
11 6
12 3
12 4

5 3座標ペアはどこにありますか。このデータを C++ で行ごとに処理するにはどうすればよいですか?

最初の行は取得できますが、ファイルの次の行を取得するにはどうすればよいでしょうか?

ifstream myfile;
myfile.open ("file.txt");

ベストアンサー1

まず、以下を作成しますifstream

#include <fstream>
std::ifstream infile("thefile.txt");

標準的な方法は 2 つあります。

  1. 各行が 2 つの数字で構成され、トークンごとに読み取られると仮定します。

    int a, b;
    while (infile >> a >> b)
    {
        // process pair (a,b)
    }
    
  2. 文字列ストリームを使用した行ベースの解析:

    #include <sstream>
    #include <string>
    
    std::string line;
    while (std::getline(infile, line))
    {
        std::istringstream iss(line);
        int a, b;
        if (!(iss >> a >> b)) { break; } // error
    
        // process pair (a,b)
    }
    

トークンベースの解析では改行文字が取り込まれないため、(1)と(2)を混在させないでください。getline()トークンベースの抽出で行末まで到達した後で使用すると、不要な空行が生成される場合があります。

おすすめ記事