如何一次读取一行或一个整个文本文件?

我在一个介绍文件的教程(如何从\到文件中读写)

首先,这不是一项功课,这只是我寻求的一般帮助。

我知道如何一次读一个单词,但是我不知道如何一次读一行或怎样读整个文本文件。

如果我的文件包含1000个字怎么办? 阅读每个单词是不实际的。

我的文本文件(读取)包含以下内容:

我喜欢玩我爱读的游戏我有2本书

这是我迄今为止所取得的成就:

#include <iostream> #include <fstream> using namespace std; int main (){ ifstream inFile; inFile.open("Read.txt"); inFile >> 

是否有任何可能的方法来读取整个文件,而不是阅读每行或每个单词分开?

你可以使用std::getline

 #include <fstream> #include <string> int main() { std::ifstream file("Read.txt"); std::string str; while (std::getline(file, str)) { // Process str } } 

还要注意,最好是在构造函数中用文件名构造文件stream,而不是明确地打开(closures也是如此,只要让析构函数完成工作)。

有关std::string::getline()更多文档可以在CPP Reference上阅读。

读取整个文本文件的最简单的方法可能就是连接这些检索到的行。

 std::ifstream file("Read.txt"); std::string str; std::string file_contents; while (std::getline(file, str)) { file_contents += str; file_contents.push_back('\n'); } 

我知道这是一个非常古老的线程,但我想指出另一种方式,其实很简单…这是一些示例代码:

 #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream file("filename.txt"); string content; while(file >> content) { cout << content << ' '; } return 0; } 

我想你可以使用istream .read()函数。 你可以循环使用合理的块大小,并直接读取到内存缓冲区,然后将其附加到某种任意内存容器(如std :: vector)。 我可以写一个例子,但我怀疑你想要一个完整的解决scheme; 请让我知道你是否需要任何额外的信息。

那么要做到这一点,也可以使用C ++提供的freopen函数 – http://www.cplusplus.com/reference/cstdio/freopen/并逐行读取文件如下; – :

 #include<cstdio> #include<iostream> using namespace std; int main(){ freopen("path to file", "rb", stdin); string line; while(getline(cin, line)) cout << line << endl; return 0; } 

还没有提到的另一种方法是std::vector

 std::vector<std::string> line; while(file >> mystr) { line.push_back(mystr); } 

然后,你可以简单地遍历vector和修改/提取你需要/