file.txt的内容是:

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

其中5 3是一个坐标对。
如何在C++中逐行处理此数据?
我可以得到第一行,但如何得到下一行文件?
ifstream myfile;
myfile.open ("text.txt");

最佳答案

首先,创建一个ifstream

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

两种标准方法是:
假设每一行由两个数字组成,并逐个读取标记:
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(),则可能会出现虚假的空行。

关于c++ - 在C++中使用ifstream逐行读取文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38620067/

10-11 23:18