【问题标题】:How to read a large text file in C++?如何在 C++ 中读取大文本文件?
【发布时间】:2015-12-26 10:42:32
【问题描述】:

我有一个包含 65536 个整数的文本文件。我正在编写下面给出的 C++ 程序来读取此文件。但它不能正常工作。它适用于具有少量整数的文本文件。但对于大文件无法正常工作。

#include(iostream)

#include(fstream)

using namespace std;

int main() {

 ifstream myReadFile;

 myReadFile.open("FileName.txt");

 char output[1000];

 if (myReadFile.is_open()) {

 while (!myReadFile.eof()) {


    myReadFile >> output;

    cout<<output;


 }

}
myReadFile.close();

system("pause");

return 0;

}

请提出解决方案。

【问题讨论】:

  • 明明是C++的,为什么还要给这个C加标签?请不要添加虚假的语言标签。
  • 该代码可以编译吗?那是实际的代码吗?
  • 编译所有警告和调试信息,然后使用调试器。而今天 65536 行是一个 small 文件(一个 large 文件会有几十 GB)
  • 为什么不一次读取一个整数?只需将输出声明为整数即可。
  • 不要char数组中使用格式化输入而不设置流的width()!它会导致潜在的缓冲区溢出。 总是在使用stream &gt;&gt; array之前设置width(),例如,使用myReadFile &gt;&gt; std::setw(sizeof(output)) &gt;&gt; output

标签: c++ visual-c++ text read-write


【解决方案1】:

每次读一行

if (myReadFile.is_open()) {
    char output[1000];

    while (!myReadFile.eof()) {
        // just read one line
        myReadFile.getline(output, 1000);
        cout<<output;
    }
    myReadFile.close();
}

【讨论】:

猜你喜欢
  • 2016-04-17
  • 2021-07-20
  • 1970-01-01
  • 2021-12-05
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多