0

Столкнулся с такой проблемой.Мне необходимо записать слова в два массива. Один массив записывает только первое слово, а второй второе.Но не в этом проблема,что если строка состоит из более кол-во слов?! Как мне выполнить переход на следующую строку после записи этих двух слов?

char logfile[256];
char logpass[256];
while(!fout.eof())
          {
           fout>>logfile;
           fout>>logpass;
          };
Alex
  • 95

2 Answers2

3

Проигнорировать все до конца строки:

fout.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Хуже, если в строке одно слово - второе тогда у вас будет считано из второй строки :)

Только учтите еще, что

while(!fout.eof())

это ошибка.

Harry
  • 221,325
2

Считать сразу всю строку, а из нее - уже слова:

string s;
if (getline(fout,s)) {
    istringstream ss(s);
    ss>>logfile;
    ss>>logpass;
    }
Mikhajlo
  • 12,592
  • 1
    а зачем считать ненужную часть, если можно считать сколько угодно? – AR Hovsepyan Sep 14 '19 at 17:30
  • А какая разница? при игнорировании точно так же будет читаться вся строка, только в никуда. А если ТС захочется еще что-то делать с остатком строки, то вот ему способ, который позволяет делать со строкой что угодно. – Mikhajlo Sep 14 '19 at 17:54
  • не согласен, при игнорировании работа ведется на уровне буффера(самая быстрая операция), и инициализировать символьную строку этими же символами, а потом еще и пользоваться услугами обьекта istringstream , слышком для такого простого желания – AR Hovsepyan Sep 14 '19 at 18:33