как считать getlin-ом с файла с++

170
14 апреля 2018, 20:41

задача проста, но не могу разобраться, мне нужно построчно считывать из файла.

    bkkk book;
  setlocale(LC_ALL, "rus");
  ifstream lib("lib.txt");
  int n;
  lib>>n;
  cout << n<< endl;
   //
  lib.getline(book.name, 50);
    cout << book.name<<endl;
    //
  lib.getline(book.autor, 50);
    cout << book.autor<<endl;
    //
  lib >>book.artcl;
    cout << book.artcl<<endl;
    //
  lib >>book.cond;
    cout << book.cond<<endl;
    //
  lib >>book.reit;
    cout << book.reit<<endl;
    //

выводит :

2
Эти свободные бабочки
0
-922093277
0

вместо :

2
Эти свободные бабочки
Герш
45788
1
5,5

как я понял, проблема в том, что lib>>- не переводи на след строку. как это можно исправить?

Answer 1

После чтения типа

lib >>book.cond;

в буфере остается остаток строки (как минимум \n). Убрать его можно (и нужно), вызывая после этого чтения сброс символов до конца строки, например:

lib.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
READ ALSO
Есть ли КАРДИНАЛЬНАЯ РАЗНИЦА в функциях ниже (*не учитывая как осуществляется вызов)?

Есть ли КАРДИНАЛЬНАЯ РАЗНИЦА в функциях ниже (*не учитывая как осуществляется вызов)?

//*не учитывая как осуществляется вызов 1 или 2 способ (результат тот же)

201
QMultimedia::setPosition() не работает

QMultimedia::setPosition() не работает

Доброго времени сутокПишу mp3 плеер

200
Не могу понять ошибку No such slot

Не могу понять ошибку No such slot

Собственно пишет No such slot

191