其他分享
首页 > 其他分享> > 使用C中的ifstream逐行读取文件

使用C中的ifstream逐行读取文件

作者:互联网

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(),你可能会得到虚假的空行.已经结束了.

标签:ofstream,c,file-io
来源: https://codeday.me/bug/20190910/1802253.html