问题描述
首先,制作一个ifstream
:
#include <fstream>
std::ifstream infile("thefile.txt");
两种标准方法是:
-
假设每一行由两个数字组成并逐个令牌读取:
int a, b;
while (infile >> a >> b) { // process pair (a,b) }
-
基于行的解析,使用字符串流:
#include <sstream>
include
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()
在基于令牌的提取让您到达末尾之后使用,您可能会得到虚假的空行已经行了。
解决方法
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");