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

问题描述

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

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...