file.txt 的内容是:
5 3 6 4 7 1 10 5 11 6 12 3 12 4
5 3坐标对在哪里。如何在 C++ 中逐行处理此数据?
5 3
我能够得到第一行,但我如何得到文件的下一行?
ifstream myfile; myfile.open ("file.txt");
首先,制作一个ifstream:
ifstream
#include <fstream> std::ifstream infile("thefile.txt");
两种标准方法是:
假设每一行由两个数字组成并逐个令牌读取:
int a, b;
while (infile >> a >> b) { // process pair (a,b) }
基于行的解析,使用字符串流:
#include <sstream>
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()在基于令牌的提取让您到达末尾之后使用,您可能会得到虚假的空行已经行了。
getline()