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 つあります。
各行が 2 つの数字で構成され、トークンごとに読み取られると仮定します。
int a, b; while (infile >> a >> b) { // process pair (a,b) }
文字列ストリームを使用した行ベースの解析:
#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()
トークンベースの抽出で行末まで到達した後で使用すると、不要な空行が生成される場合があります。