在C + +中有一种方法去文本文件中的特定行?

如果我用fstream打开一个文本文件,是否有一个简单的方法来跳转到特定的行,如第8行?

在那里循环。

#include <fstream> #include <limits> std::fstream& GotoLine(std::fstream& file, unsigned int num){ file.seekg(std::ios::beg); for(int i=0; i < num - 1; ++i){ file.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); } return file; } 

file的查找指针设置为行num的开头。

使用以下内容testing文件:

 1 2 3 4 5 6 7 8 9 10 

Testprogram:

 int main(){ using namespace std; fstream file("bla.txt"); GotoLine(file, 8); string line8; file >> line8; cout << line8; cin.get(); return 0; } 

输出: 8

如果每一行都有相同的长度,则可以使用istream :: seekg ()跳转到该位置并从那里读取。

如果这些行的长度相同,这里是一个工作和整洁的例子: std::getline()

 #include <iostream> #include <fstream> #include <string> const int LINE = 4; int main() { std::ifstream f("FILE.txt"); std::string s; for (int i = 1; i <= LINE; i++) std::getline(f, s); std::cout << s; return 0; } 

一般来说, ,你必须采用类似于Xeo所示的策略。

如果netrom说你知道线条有固定的长度, 是的

即使线路长度事先不知道,但(1)你会想要跳过很多,(2)你可以保证没有人搞乱你的文件,同时你可以做一个通过形成一个索引,然后使用它。