Поясните как компилятор интерпретирует выражение в проверочном условии

Pa - массив структур, fullname - элемент структуры(массив char). Почему в данной строке кода, в случае если сразу нажать ENTER, условие будет TRUE. Что происходит после нажатия ENTER (без ввода других символов). Я понимаю, что генерируется символ новой строки, который остаётся во входной очереди. Функция get() помещает нулевой символ в таком случае или нет? Функция возвращает объект cin, почему он false, если никаких флагов не устанавливается?

   if(!(cin.get(pa[i].fullname, SLEN))) return i;

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Почему вы решили что "никаких флагов не устанавливается"?

std::basic_istream<CharT,Traits>::get:

If no characters were extracted, calls setstate(failbit).

Если будет введена пустая строка, поток переводится в "неуспех".

→ Ссылка