Я пытаюсь прочитать в файле, который имеет 5 строк, и каждая строка длиной 3-4 строки. Вот мой входной файл:C++ getline и stringstream
10:30 Hurley 1234567A 10:15
10:45 Hurley 1234567A 11:30
08:35 Jacob 1x1x1x1x1x
08:35 Jacob 1x1x1x1x1x 08:10
08:05 Jacob 1x1x1x1x1x
08:45 Sayid 33332222 09:15
И это то, что я получаю:
10:30 Hurley 1234567A 10:15
10:45 Hurley 1234567A 11:30
08:35 Jacob 1x1x1x1x1x 11:30
08:35 Jacob 1x1x1x1x1x 08:10
08:05 Jacob 1x1x1x1x1x 08:10
08:45 Sayid 33332222 09:15
Это мой код:
void enor::Read(status &sx,isle &dx,ifstream &x){
string str;
getline(x, str, '\n');
stringstream ss;
ss << str;
ss >> dx.in >> dx.name >> dx.id >> dx.out;
/*getline(x, str, '\n');
x>>dx.in>>dx.name>>dx.id>>dx.out;*/
if(x.fail())
sx=abnorm;
else
sx=norm;
}
Как можно прочитать в файле, не имея 3-й и 5-я линия, заполненная 2-й и 4-й строками? Я хочу, чтобы dx.out был пустым. Должен ли я использовать другой метод, или это можно сделать с помощью stringstream?
Можете ли вы показать, как вы называете эту функцию тоже? Вы повторно используете объект 'dx'? –
void enor :: First() { Чтение (sx, dx, x); Next(); } void enor :: Next() { end = sx == abnorm; если (! Конец) { current.in = dx.in; current.name = dx.name; current.id = dx.id; current.out = dx.out; Чтение (sx, dx, x); /* while (sx == norm && dx.id == current.id) { if (dx.in> current.out) Read (sx, dx, x); } */ } } – wfmn17