我希望 cin 读取直到'n'但我无法使用 getline
I want cin to read until ' ' but I cannot use getline
我有一个以下格式的文本文件:
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
}
}
然而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::istream::getline
而不是std::getline
。您可以选择缓冲区大小和分隔符。
相关文章:
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 为什么 getline() 不读取文本文件中的所有内容?
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 使用getline读取.csv文件时出现问题
- 如何在不循环的情况下使用getline读取文件
- 如何使此函数使用 getline 读取字符串并使用 int 执行相同的行为?
- std::getline 读取最后一个字符串两次
- 使用 getline 读取字符串,但每行中都有换行符
- 使用 Stringstream 和 getline 读取每行的前两个数字
- 我无法使用 getline() 读取一行
- 使用getline读取文件/输入时出现分段错误
- 从 getline 读取到非空字符串时出现意外输出
- 在C++中使用getline读取数字和名称
- getline读取C++中用大写字母分隔的文本
- 使用getline() c++读取文件时出现问题
- 使用 getline() 读取空格不起作用
- Getline()读取额外的行
- 使用getline读取文件时出现问题
- getline读取同一行(c++,istream)
- 当check为eof时,使用getline读取文本文件会导致无限循环