小编典典

在 C++ 中使用 ifstream 逐行读取文件

all

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");

阅读 87

收藏
2022-03-03

共1个答案

小编典典

首先,制作一个ifstream

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

两种标准方法是:

  1. 假设每一行由两个数字组成并逐个令牌读取:

    int a, b;
    

    while (infile >> a >> b)
    {
    // process pair (a,b)
    }

  2. 基于行的解析,使用字符串流:

    #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()在基于令牌的提取让您到达末尾之后使用,您可能会得到虚假的空行已经行了。

2022-03-03