发布日期:2018-03-26
逐行读文件+ 查看更多
逐行读文件
+ 查看更多
发布日期:2018-02-26 17:03
分类:CPlusPlus
浏览次数:58
file.txt的内容是:
我可以得到第一行,但如何获得文件的下一行?
5 3 6 4 7 1 10 5 11 6 12 3 12 4其中5 3是坐标对。如何在C++中逐行处理此数据?
我可以得到第一行,但如何获得文件的下一行?
ofstream myfile; myfile.open ("text.txt");
回答:
首先,创建一个ifstream#includestd::ifstream infile("thefile.txt");
两种标准方法是:
1.假设每行由两个数字组成,并通过令牌读取令牌:
int a, b; while (infile >> a >> b) { // process pair (a,b) }2.基于行的解析,使用字符串流:
#include#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) }
以上两种方法不能混用。因为基于令牌的解析不会使换行符改动,因此如果在这种情况下,到达行的末尾之后使用getline(),就可能会得到空行。