Я хочу, чтобы cin читал до "n", но я не могу использовать getline
у меня есть текстовый файл в следующем формате:
info
data1 data2
info
data1 data2 data3 data4...
проблема в том, что количество (и длина) данных может быть очень большим и вызывать проблемы во время выполнения, когда есть. Поэтому я не могу прочитать всю строку в 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 и программа все портит. Как я могу это исправить? 2 ответов
вы можете попробовать читать Символ за символом.
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
. Вы можете выбрать размер буфера и разделитель.