c++中getline的缓冲区大小限制

buffer size limit for getline in C++

本文关键字:缓冲区 getline c++      更新时间:2023-10-16

我有一个简单的c++程序,它逐行读取文件。有些行超过20000个字符。下面的程序只能读取这些大行的4095个字符。我认为这是因为缓冲区大小的限制。如何解决阅读大行的问题?

// reading a text file
    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    int main () {
      string line;
      ifstream myfile ("new.fasta");
      if (myfile.is_open())
      {
        while ( getline (myfile,line) )
        {
          cout << line.length() << 'n';
        }
        myfile.close();
      }
      else cout << "Unable to open file";
      return 0;
    }

在您的输入中尝试sed ${n}p | wc,其中n是所讨论的行号。我猜wc会报告它是4095个字符,或者在位置4096有一些特殊的东西。

根据标准,

std::getline没有缓冲区大小限制。