C+中getline的缓冲区大小限制+; 我有一个简单的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; } //读取文本文件 #包括 #包括 #包括 使用名称空间std; int main(){ 弦线; ifstream myfile(“new.fasta”); 如果(myfile.is_open()) { while(getline(myfile,line)) { cout

C+中getline的缓冲区大小限制+; 我有一个简单的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; } //读取文本文件 #包括 #包括 #包括 使用名称空间std; int main(){ 弦线; ifstream myfile(“new.fasta”); 如果(myfile.is_open()) { while(getline(myfile,line)) { cout,c++,file,getline,C++,File,Getline,在您的输入上尝试sed${n}p|wc,其中n是有问题的行号。我猜wc将报告它为4095个字符,或者在4096位置有特殊的内容 根据标准,std::getline没有缓冲区大小限制。您的文本文件在到达换行符之前有超过20K个字符?@NathanOliver是的,有时也超过30K如果您执行line.reserve(20000)声明后?如果是getline或字符串的增长问题,这将有助于缩小范围。我刚刚在我的系统中使用您的程序进行了测试,我能够读取超过30k个字符。您确定您的数据没有换行分隔符吗?我

在您的输入上尝试
sed${n}p|wc
,其中
n
是有问题的行号。我猜wc将报告它为4095个字符,或者在4096位置有特殊的内容


根据标准,
std::getline
没有缓冲区大小限制。

您的文本文件在到达换行符之前有超过20K个字符?@NathanOliver是的,有时也超过30K如果您执行
line.reserve(20000)
声明后?如果是
getline
或字符串的增长问题,这将有助于缩小范围。我刚刚在我的系统中使用您的程序进行了测试,我能够读取超过30k个字符。您确定您的数据没有换行分隔符吗?我尝试了另一个文件,效果很好。似乎有输入文件有问题。