C++ 我想一直读到'\n';但是我不能使用getline

C++ 我想一直读到'\n';但是我不能使用getline,c++,string,io,newline,cin,C++,String,Io,Newline,Cin,我有一个以下格式的文本文件: info data1 data2 info data1 data2 data3 data4... 问题是:当使用getline()时,数据的计数(和长度)可能非常大,并导致运行时问题。因此,我无法将整行内容读入std::string。我尝试了以下方法: for(int i=0; i<SOME_CONSTANT ; i++){ string info, data; cin >> info; while(cin.peek(

我有一个以下格式的文本文件:

info
data1 data2
info
data1 data2 data3 data4...
问题是:当使用
getline()
时,数据的计数(和长度)可能非常大,并导致运行时问题。因此,我无法将整行内容读入
std::string
。我尝试了以下方法:

for(int i=0; i<SOME_CONSTANT ; i++){
    string info, data;

    cin >> info;

    while(cin.peek() != '\n' && cin >> data){
         // do stuff with data
    }
}
for(int i=0;i>info;
而(cin.peek()!='\n'和&cin>>数据){
//处理数据
}
}

但是
cin.peek()
并没有起到作用。信息在while循环中被读入数据,程序会把事情弄糟。我如何解决这个问题?

您可以尝试逐个字符读取

char ch;
data = "";
cin >> std::noskipws;
while( cin >> ch && ch != '\n' ) {
  if ( ch == " " ) {
    // do stuff with data
    data = "";
    continue;
  }
  data += ch;
}
cin >> std::skipws;

使用而不是
std::getline
。您可以选择缓冲区大小和分隔符。

是否尝试将
std::string::max_size
作为
std::istream::getline
的第二个参数?数据的大小会是一个什么问题?行有多长?最多150.000个字符15000个字符大约是150 KiB,那么是什么类型的呢“运行时问题”的原因是什么?你的
std::string::max_size
是什么?事实上,我被一个我不知道的系统所束缚(编程竞赛,我们所知道的关于数据的一切都是边界)。然而,我试图打印从我的文本文件中读取的一行大小,它有120.000个字符长,而程序对该行没有输出任何内容。