#c
#c
Вопрос:
За исключением таких входных данных, как ctrl c и т.д.
Насколько я понимаю, getline может выйти из строя только при достижении EOF, но я не очень уверен.
Комментарии:
1. cplusplus.com/reference/string/string/getline/#return
2. Все, что приводит к тому, что входной поток находится в состоянии ошибки. Это выражается в том, что устанавливается один или несколько из
std::ios_base::failbit
,std::ios_base::eofbit
, илиstd::ios_base::badbit
. Если ни один из них не задан,std::getline()
(илиstd::istream
названные члены sgetline()
) могут привестиeofbit
failbit
к установке или. Для получения информации о том, что означают состояния ошибок (для потоков в целом), посмотрите на en.cppreference.com/w/cpp/io/ios_base/iostate Для получения информации о том, когдаstd::getline()
устанавливаются состояния ошибки, посмотрите на en.cppreference.com/w/cpp/string/basic_string/getline3. @Питер С этим, я полагаю, вы могли бы вычеркнуть этот вопрос из списка вопросов, оставшихся без ответа.
4. @Yunnosch Я упустил еще кое-что. Я постараюсь расширить комментарий в ответ в ближайшее время.
Ответ №1:
Короткий ответ: все, что приводит к тому, что входной поток находится в состоянии ошибки.
«Состояние ошибки» стандартного потока (производного от std::istream
) выражается в терминах одного или нескольких из std::ios_base::failbit
, std::ios_base::eofbit
(связанных с концом файла), или устанавливается std::ios_base::badbit . ios_base
является базовым классом — через шаблонный std::basic_ios
класс — всех стандартных потоков.
Если ни одно из этих состояний ошибки не установлено, std::getline()
(или функция-член std::istream
named getline()
) может вызвать либо eofbit
или failbit
быть установлен.
И наоборот, std::getline()
будет реагировать на существующие состояния ошибок и не сможет прочитать входные данные, если они установлены.
Для получения информации о том, что означают состояния ошибок (т. Е. Что вызывает их для стандартных потоков в целом), См. Материал cppreference на iostate .
Для получения информации о том, когда std::getline()
устанавливаются состояния ошибки, см. Материал cppreference on std::getline()
. Аналогично, для получения информации о том, когда getline()
член стандартных входных потоков устанавливает состояния ошибки, см. Материал cppreference по std::basic_istream::getline() .