Поясните как компилятор интерпретирует выражение в проверочном условии
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)
.
Если будет введена пустая строка, поток переводится в "неуспех".