C++ fastest way to read file line by line
我不想要任何增强依赖或任何外部的东西。我可以一行一行地读取文件,并分别处理每一行。但如果它工作得更好,我也可以将整个文件加载到内存中,然后逐行处理。
最好的方法是什么?另外,最快的方法是什么,它们有什么不同?
此外,这两种方法都可以用于常规文本文件,并通过终端传送文件。
- 我在使用ifstream时发现了这个引用,但是没有足够的细节lemire.me/blog/2012/06/26/…
- 你想要最好的方法还是最快的方法?你可能不能两者兼得。
- @Ukmonkey感谢上帝,有人对他们的否决留下了解释,即使是以那种形式。夸奖。
- 你为什么要逐行阅读?将所有文件内容作为一个整体读取,然后逐行处理最有可能更快。
- @如果我没有解释为什么我认为这很糟糕,人们怎么能在我错的时候纠正我,或者从他们的错误中吸取教训呢?;)
- 另请参见:stackoverflow.com/q/31162367/10077
- @你不知道吗?他们不应该学习,他们应该从这个神圣的网站上消失-当然我在开玩笑。但这就是用户行为的很大一部分。
完全使用getline std::。straightforward漂亮的解决方案:
1 2 3 4 5
| std::ifstream file("filePath");
std::string line;
while (std::getline(file, line)) {
// line contains the current line
} |
- 谢谢。如果我必须通过管道读取文本文件,即通过终端管道传输文本文件,该如何更改?
- @Baronyugovich:如果你只是在用管道输入stdin,只需要使用类似于std::getline(std::cin, line)的东西。