Перейти к содержимому

Cin fail c что это

  • автор:

cin.ignore; cin.clear; cin.fail

Потоковые обьекты, такие как cin и cout , также как и любой другой обьект, имеют определенное состояние. Для них состояние оценивается установкой определенных бит, goodbit (установлен по умолчанию и имеет нулевое значение), badbit, failbit . Если по какой то причине поток «сломался», то установится badbit , и программа аварийно завершится. Если была попытка чтения типа, но невозможно читать его из буфера, то устанавливается состояние failbit .

  1. std::cin.fail() будет означать: да, установлен failbit , поэтому любая попытка читать дальше, будет безуспешным. std::cin будет ждать очистки всех установленных битов состояния.
  2. Это делается функцией std::cin.clear , вызов которого приводит к обнулению всех битов состояния, а это и есть goodbit . Только после этого можем попытаться читать что то другое. Если мы решили, что в таком случаи(раз не было там числа) нужно пропустить строку и попытаться читать число в новой строке, то мы даем команду «игнорировать»(читать, но оставлять в буфере) много символов, пока не встретим символ перевода строки.
  3. std::cin.ignore(32767,’\n’); и есть эта команда(вместо 32767 может быть любая большая цифра такая, что точно больше, чем количество символов до ‘\n’)

Отслеживать
ответ дан 29 фев 2020 в 19:47
AR Hovsepyan AR Hovsepyan
15.9k 3 3 золотых знака 14 14 серебряных знаков 30 30 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Cin fail c что это

Объявляет объекты, управляющие чтением из стандартных потоков и записью в них. Это часто единственный заголовок, который требуется выполнить входные и выходные данные из программы C++.

Синтаксис

#include

Библиотека использует #include операторы , #include #include и #include инструкции.

Замечания

Объекты можно разделить на две группы:

  • cin , cout , cerr и clog ориентированы на байты, выполняя обычные передачи байтов во время.
  • wcin , , wcoutwcerr и wclog широко ориентированы, переводя на широкие символы, которые программа управляет внутренне.

После выполнения определенных операций в потоке, таких как стандартные входные данные, нельзя выполнять операции другой ориентации в одном потоке. Таким образом, программа не может работать взаимозаменяемо для обоих cin и wcin , например.

Все объекты, объявленные в этом заголовке, имеют своеобразное свойство— можно предположить, что они создаются перед определением статических объектов в единице перевода, которая включает в себя . Кроме того, можно предположить, что эти объекты не уничтожаются перед деструкторами для таких статических объектов, которые вы определяете. (Однако выходные потоки удаляются во время завершения программы.) Поэтому вы можете безопасно считывать или записывать в стандартные потоки до запуска программы и после завершения программы.

Однако эта гарантия не является универсальной. Статический конструктор может вызвать функцию в другой записи преобразования. Вызываемая функция не может предположить, что объекты, объявленные в этом заголовке, были созданы, учитывая неопределенный порядок, в котором единицы перевода участвуют в статической конструкции. Чтобы использовать эти объекты в таком контексте, необходимо сначала создать объект класса ios_base::Init .

Глобальные объекты потоков

Имя Описание
cerr Указывает глобальный поток cerr .
cin Указывает глобальный поток cin .
clog Указывает глобальный поток clog .
cout Указывает глобальный поток cout .
wcerr Указывает глобальный поток wcerr .
wcin Указывает глобальный поток wcin .
wclog Указывает глобальный поток wclog .
wcout Указывает глобальный поток wcout .

cerr

Объект cerr управляет выходными данными в буфер потока, связанный с объектом stderr , объявленным в .

extern ostream cerr; 
Возвращаемое значение
Замечания

Этот объект управляет вставкой без буферизации в стандартный вывод ошибок в виде байтового потока. После создания объекта выражение cerr.flags & unitbuf ненулевое и cerr.tie() == &cout . Дополнительные сведения см. здесь: cerr.flags и unitbuf .

Пример
// iostream_cerr.cpp // compile with: /EHsc #include #include using namespace std; void TestWide( ) < int i = 0; wcout > i; wcerr int main( ) < int i = 0; cout > i; cerr

cin

Указывает глобальный поток cin .

extern istream cin; 
Возвращаемое значение
Замечания

Объект контролирует получение данных из стандартного ввода, как потока байтов. После создания объекта вызов cin.tie возвращается &cout .

Пример

В этом примере задает бит сбоя в потоке, cin когда он приходится на нечисловые символы. Программа очищает бит сбоя и удаляет недопустимый символ из потока, чтобы продолжить.

// iostream_cin.cpp // compile with: /EHsc #include using namespace std; int main() < int x; cout > x; while (x < 1 || x >4) < cout > x; // not a numeric character, probably // clear the failure and pull off the non-numeric character if (cin.fail()) < cin.clear(); char c; cin >> c; > > > 

clog

Указывает глобальный поток clog .

extern ostream clog; 
Возвращаемое значение
Замечания

Этот объект управляет вставкой с буферизацей в стандартный вывод ошибок в виде байтового потока.

Пример

См. cerr с примером использования clog .

cout

Указывает глобальный поток cout .

extern ostream cout; 
Возвращаемое значение
Замечания

Этот объект управляет вставкой в стандартный вывод в виде байтового потока.

Пример

См. cerr с примером использования cout .

wcerr

Указывает глобальный поток wcerr .

extern wostream wcerr; 
Возвращаемое значение
Замечания

Этот объект управляет вставкой без буферизации в стандартный вывод ошибок в виде двухбайтового потока. После создания объекта выражение wcerr.flags & unitbuf ненулевое. Дополнительные сведения см. здесь: wcerr.flags и unitbuf .

Пример

См. cerr с примером использования wcerr .

wcin

Указывает глобальный поток wcin .

extern wistream wcin; 
Возвращаемое значение
Замечания

Этот объект управляет извлечением из стандартного ввода в виде двухбайтового потока. После создания объекта вызов wcin.tie возвращается &wcout .

Пример

См. cerr с примером использования wcin .

wclog

Указывает глобальный поток wclog .

extern wostream wclog; 
Возвращаемое значение
Замечания

Этот объект управляет вставкой с буферизацей в стандартный вывод ошибок в виде двухбайтового потока.

Пример

См. cerr с примером использования wclog .

wcout

Указывает глобальный поток wcout .

extern wostream wcout; 
Возвращаемое значение
Замечания

Этот объект управляет вставкой в стандартный вывод в качестве широкого потока.

Пример

См. cerr с примером использования wcout .

Экземпляры CString в операторе wcout необходимо привести к const wchar_t* , как показано в следующем примере.

CString cs("meow"); wcout <<(const wchar_t*) cs < 

Дополнительные сведения см. в разделе Базовые операции CString.

c++. cin.ignore и cin.clear

определенная в классе istream, извлекает из потока символы и отбрасывает их. Причем она так поступает либо с n символами, либо со всеми символами, пока в потоке не встретится символ, заданный параметром delim.

В нашем случае мы стремимся отбросить максимальное число символов, которое может содержать поток, до первого перевода строки включительно.

void ios::clear(iostate state = goodbit);

Эта функция восстанавливает поток, если он по какой-либо причине оказался в ошибочном состоянии. Например, из потока пытались прочитать число, а там в это время находились буквы. В этом случае, поток переводится в состояние отказа, и дальнейшие операции с ним неосуществимы. В том числе и cin.get(). Функция же clear() “очищает” состояние потока, делая его вновь веселым и работоспособным.

Источник: cppstudy.wordpress.com/2009/03/27/cin-get-and-co/
Алекс АндрПрофи (543) 10 лет назад
Благодарствую!
Остальные ответы

cin.ignore(100,'\n'); тут вроде в обьект передается два параметра.
флаг ios_base :: goodbit имеет значение ноль, указывает на отсутствие каких-либо флагов ошибки

Класс basic_istream

Описывает объект, который управляет извлечением элементов и закодированными объектами из буфера потока с элементами типа Char_T , также известным как char_type , признаки символов которого определяются классом Tr , также известным как traits_type .

Синтаксис

template > class basic_istream : virtual public basic_ios

Замечания

Большинство функций-членов, которые перегружены operator>> , форматируют входные функции. Они следуют этому шаблону:

iostate state = goodbit; const sentry ok(*this); if (ok) < try < /*extract elements and convert accumulate flags in state. store a successful conversion*/ >catch (. ) < try < setstate(badbit); >catch (. ) < >if ((exceptions()& badbit) != 0) throw; > > setstate(state); return (*this); 

Многие другие функции-члены — это неформатированные входные функции. Они следуют этому шаблону:

iostate state = goodbit; count = 0; // the value returned by gcount const sentry ok(*this, true); if (ok) < try < /* extract elements and deliver count extracted elements in count accumulate flags in state */ >catch (. ) < try < setstate(badbit); >catch (. ) < >if ((exceptions()& badbit) != 0) throw; > > setstate(state); 

Обе группы функций вызываются setstate(eofbit) при обнаружении конца файла при извлечении элементов. Дополнительные сведения см. в разделе setstate .

Объект класса basic_istream хранит:

  • Виртуальный общедоступный базовый объект класса basic_ios . Дополнительные сведения см. в разделе basic_ios .
  • Счетчик извлечения для последней неформатированных входных операций (вызывается count в предыдущем коде).

Пример

Дополнительные сведения о входных потоках см. в примере basic_ifstream класса .

Конструкторы

Конструктор Description
basic_istream Создает объект типа basic_istream .

Функции элементов

Функция-член Description
gcount Возвращает число символов, считанных во время последнего неформатированного ввода.
get Считывает один или несколько символов из входного потока.
getline Считывает строку из входного потока.
ignore Пропускает несколько элементов после текущей позиции чтения.
peek Возвращает следующий символ для чтения.
putback Помещает указанный символ в поток.
read Считывает указанное количество символов из потока и сохраняет их в массиве.
readsome Чтение только из буфера.
seekg Перемещает позицию чтения в потоке.
sentry Вложенный класс описывает объект, объявление которого структурирует форматированные и неформатированные входные функции.
swap Меняет местами этот объект basic_istream с указанным параметром объекта basic_istream .
sync Синхронизирует связанное с потоком устройство ввода с буфером потока.
tellg Сообщает текущую позицию чтения в потоке.
unget Помещает самый последний считанный символ обратно в поток.

Операторы

Operator Description
operator>> Вызывает функцию для входного потока или считывает форматированные данные из входного потока.
operator= Назначает basic_istream справа от оператора этому объекту. Это назначение перемещения, включающее ссылку rvalue , которая не оставляет копию позади.

Требования

Заголовок.

Пространство имен std :

basic_istream::basic_istream

Создает объект типа basic_istream .

explicit basic_istream( basic_streambuf* strbuf, bool _Isstd = false); basic_istream(basic_istream&& right); 

Параметры

_Isstd
true Значение , если это стандартный поток; false в противном случае .

right
Объект basic_istream для копирования.

Замечания

Первый конструктор инициализирует базовый класс путем вызова init(strbuf) . Он также хранит нуль в счетчике извлечений. Дополнительные сведения см. в разделе init . Дополнительные сведения об этом количестве извлечения см. в разделе "Примечания" в обзоре basic_istream класса .

Второй конструктор инициализирует базовый класс путем вызова move(right) . Он также сохраняет в счетчике извлечения и сохраняет right.gcount() ноль в счетчике извлечения для right .

Пример

Дополнительные сведения о входных потоках см. в примере basic_ifstream::basic_ifstream .

basic_istream::gcount

Возвращает число символов, считанных во время последнего неформатированного ввода.

streamsize gcount() const; 

Возвращаемое значение

Замечания

Используется basic_istream::get для чтения неформатированных символов.

Пример

// basic_istream_gcount.cpp // compile with: /EHsc #include using namespace std; int main( )
Type the letter 'a': a 1 

basic_istream::get

Считывает один или несколько символов из входного потока.

int_type get(); basic_istream& get(Char_T& Ch); basic_istream& get(Char_T* str, streamsize count); basic_istream& get(Char_T* str, streamsize count, Char_T delimiter); basic_istream& get(basic_streambuf& strbuf); basic_istream& get(basic_streambuf& strbuf, Char_T delimiter); 

Параметры

count
Число символов для чтения из strbuf .

delimiter
Символ, который должен завершить чтение, если он обнаружен раньше count .

str
Строка, в которую должна выполняться запись.

Ch
Символ для получения.

strbuf
Буфер, в который должна выполняться запись.

Возвращаемое значение

Без параметров форма get возвращает элемент, считываемый как целое число или конец файла. Остальные формы возвращают поток ( *this ).

Замечания

Первая неформатированная входная функция извлекает элемент, если это возможно, как будто возвращается rdbuf->sbumpc . В противном случае возвращается значение traits_type:: eof . Если функция извлекает элемент без элемента, вызывается setstate(failbit) . Дополнительные сведения см. в разделе setstate .

Вторая функция извлекает int_type элемент meta таким же образом. Если meta сравнивается равным traits_type::eof , вызывается setstate(failbit) функция. В противном случае он хранится traits_type::to_char_type(meta) в Ch . Функция возвращает *this . Дополнительные сведения см. в разделе to_char_type .

Третья функция возвращается get(str, count, widen('\n')) .

Четвертая функция извлекает элементы count - 1 и сохраняет их в массиве, начиная с str . Она всегда сохраняет char_type после сохранения всех извлеченных элементов. В целях тестирования извлечение останавливается:

  • в конце файла;
  • После извлечения элемента, который сравнивается с delimiter . В этом случае элемент возвращается к управляемой последовательности.
  • После извлечения count - 1 элементов функции.

Если функция не извлекает ни один элемент, она вызывает setstate(failbit) . В любом случае она возвращает *this .

Возвращается пятая функция get(strbuf, widen('\n')) .

Шестая функция извлекает элементы и вставляет их в strbuf . Извлечение останавливается в конце файла или на элементе, который сравнивается с равным delimiter , который не извлекается. Оно также останавливается без извлечения соответствующего элемента, если вставка завершается неудачно или создает исключение (которое перехватывается, но не создается повторно). Если функция не извлекает ни один элемент, она вызывает setstate(failbit) . В любом случае функция возвращается *this .

Пример

// basic_istream_get.cpp // compile with: /EHsc #include using namespace std; int main( )
1111 

basic_istream::getline

Получает строку из входного потока.

basic_istream& getline( char_type* str, streamsize count); basic_istream& getline( char_type* str, streamsize count, char_type delimiter); 

Параметры

count
Число символов для чтения из strbuf .

delimiter
Символ, который должен завершить чтение, если он обнаружен раньше count .

str
Строка, в которую должна выполняться запись.

Возвращаемое значение

Замечания

Первая из этих неформатированных входных функций возвращается getline(str, count, widen('\n')) .

Вторая функция извлекает элементы count - 1 и сохраняет их в массиве, начиная с str . Она всегда сохраняет символ окончания строки после сохранения всех извлеченных элементов. В целях тестирования извлечение останавливается:

  • в конце файла;
  • После извлечения элемента, который сравнивается с delimiter . В этом случае элемент не помещается обратно, и он не добавляется к управляемой последовательности.
  • После извлечения count - 1 элементов функции.

Если функция извлекает элементы или count - 1 элементы, вызывается setstate(failbit) . В любом случае она возвращает *this . Дополнительные сведения см. в разделе setstate .

Пример

// basic_istream_getline.cpp // compile with: /EHsc #include using namespace std; int main( )

basic_istream::ignore

Пропускает несколько элементов после текущей позиции чтения.

basic_istream& ignore( streamsize count = 1, int_type delimiter = traits_type::eof()); 

Параметры

count
Количество пропускаемых элементов от текущей позиции чтения.

delimiter
Элемент, который, если обнаружен до подсчета, вызывает ignore возврат и разрешение всех элементов после delimiter чтения.

Возвращаемое значение

Замечания

Неформатированная входная функция извлекает до count элементов и удаляет их. Однако если count равно numeric_limits::max , оно принимается как произвольно большое. Извлечение останавливается рано на конце файла или на элементе Ch , который traits_type::to_int_type(Ch) сравнивается с delimiter (который также извлекается). Функция возвращает *this . Дополнительные сведения см. в разделе to_int_type .

Пример

// basic_istream_ignore.cpp // compile with: /EHsc #include int main( ) < using namespace std; char chararray[10]; cout > chararray; cout
Type 'abcdef': abcdef def 

basic\_istream::operator>>

Вызывает функцию для входного потока или считывает форматированные данные из входного потока.

basic_istream& operator>>(basic_istream& (* Pfn)(basic_istream&)); basic_istream& operator>>(ios_base& (* Pfn)(ios_base&)); basic_istream& operator>>(basic_ios& (* Pfn)(basic_ios&)); basic_istream& operator>>(basic_streambuf* strbuf); basic_istream& operator>>(bool& val); basic_istream& operator>>(short& val); basic_istream& operator>>(unsigned short& val); basic_istream& operator>>(int& val); basic_istream& operator>>(unsigned int& val); basic_istream& operator>>(long& val); basic_istream& operator>>(unsigned long& val); basic_istream& operator>>(long long& val); basic_istream& operator>>(unsigned long long& val); basic_istream& operator>>(void *& val); basic_istream& operator>>(float& val); basic_istream& operator>>(double& val); basic_istream& operator>>(long double& val); 

Параметры

Pfn
Указатель функции.

strbuf
Объект типа stream_buf .

val
Значение для чтения из потока.

Возвращаемое значение

Замечания

Заголовок также определяет несколько глобальных операторов извлечения. Дополнительные сведения см. в разделе operator>> (\) .

Первая функция-член гарантирует, что выражение вызовов ws(istr) форм istr >> ws , а затем возвращается *this . Дополнительные сведения см. в разделе ws .

Второй и третий функции обеспечивают аналогичное поведение других манипуляторов, таких как hex . Остальные функции — это отформатированные входные функции.

basic_istream& operator>>( basic_streambuf* strbuf); 

извлекает элементы, если strbuf не является пустым указателем, и вставляет их в strbuf . Извлечение останавливается в конце файла. Оно также останавливается без извлечения соответствующего элемента, если вставка завершается неудачно, или создает исключение (которое перехватывается, но не создается повторно). Если функция не извлекает ни один элемент, она вызывает setstate(failbit) . В любом случае функция возвращается *this . Дополнительные сведения см. в разделе setstate .

basic_istream& operator>>(bool& val); 

извлекает поле и преобразует его в логическое значение путем вызова use_facet< num_get(getloc).get( InIt(rdbuf), Init(0), *this, getloc, val) . InIt Здесь определяется как istreambuf_iterator . Функция возвращает *this .

Дополнительные сведения см. в разделе use_facet , getloc , get , rdbuf и istreambuf_iterator .

Каждая из функций:

basic_istream& operator>>(short& val); basic_istream& operator>>(unsigned short& val); basic_istream& operator>>(int& val); basic_istream& operator>>(unsigned int& val); basic_istream& operator>>(long& val); basic_istream& operator>>(unsigned long& val); basic_istream& operator>>(long long& val); basic_istream& operator>>(unsigned long long& val); basic_istream& operator>>(void *& val); 

извлеките поле и преобразуйте его в числовое значение путем вызова use_facet(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val) . InIt Здесь определяется как val istreambuf_iterator и имеет тип long unsigned long или void * по мере необходимости.

Если преобразованное значение не может быть представлено как тип val , вызывается setstate(failbit) функция. В любом случае функция возвращается *this . Дополнительные сведения см. в разделе setstate .

Каждая из функций:

basic_istream& operator>>(float& val); basic_istream& operator>>(double& val); basic_istream& operator>>(long double& val); 

извлеките поле и преобразуйте его в числовое значение путем вызова use_facet(getloc).get(InIt(rdbuf), Init(0), *this, getloc, val) . InIt Здесь определяется как istreambuf_iterator val и имеет тип double или long double по мере необходимости.

Если преобразованное значение не может быть представлено как тип val , вызывается setstate(failbit) функция. В любом случае она возвращает *this .

Пример

// istream_basic_istream_op_is.cpp // compile with: /EHsc #include using namespace std; ios_base& hex2( ios_base& ib ) < ib.unsetf( ios_base::dec ); ib.setf( ios_base::hex ); return ib; >basic_istream >& somefunc(basic_istream > &i) < if ( i == cin ) < cerr return i; > int main( ) < int i = 0; cin >> somefunc; cin >> i; cout > hex2; cin >> i; cout

basic_istream::operator=

Назначает basic_istream справа от оператора этому объекту. Это назначение перемещения, включающее ссылку rvalue , которая не оставляет копию позади.

basic_istream& operator=(basic_istream&& right); 

Параметры

right
Ссылка rvalue на объект basic_ifstream .

Возвращаемое значение

Замечания

Оператор-член вызывает swap(right) .

basic_istream::peek

Возвращает следующий символ для чтения.

int_type peek(); 

Возвращаемое значение

Следующий символ для чтения.

Замечания

Неформатированная входная функция извлекает элемент, если это возможно, как будто возвращается rdbuf->sgetc . В противном случае возвращается значение traits_type::eof . Дополнительные сведения см. в разделах sgetc и eof .

Пример

// basic_istream_peek.cpp // compile with: /EHsc #include using namespace std; int main( )
abcde 
Type 'abcde': abcde a abcde 

basic_istream::putback

Помещает указанный символ в поток.

basic_istream& putback( char_type Ch); 

Параметры

Ch
Символ для помещения обратно в поток.

Возвращаемое значение

Замечания

Неформатированные входные функции возвращаются Ch , если это возможно, как при вызове rdbuf->sputbackc . Если rdbuf имеет значение NULL, или если вызов sputbackc возвращается traits_type::eof , функция вызывается setstate(badbit) . В любом случае она возвращает *this .

Дополнительные сведения см. в разделе rdbuf , sputbackc , eof , и setstate .

Пример

// basic_istream_putback.cpp // compile with: /EHsc #include using namespace std; int main( )

basic_istream::read

Считывает указанное количество символов из потока и сохраняет их в массиве.

Этот метод является потенциально опасным, так как зависит от вызывающего объекта при проверке правильности переданных значений.

basic_istream& read( char_type* str, streamsize count); 

Параметры

str
Массив, из которого должны считываться символы.

count
Число символов для чтения.

Возвращаемое значение

Поток ( *this ).

Замечания

Неформатированная входная функция извлекает элементы count и сохраняет их в массиве, начиная с str . Извлечение останавливается рано в конце файла, в этом случае вызовы setstate(failbit) функции. В любом случае она возвращает *this . Дополнительные сведения см. в разделе setstate .

Пример

// basic_istream_read.cpp // compile with: /EHsc #include using namespace std; int main() < char c[10]; int count = 5; cout 
abcde 
Type 'abcde': abcde abcde 

basic_istream::readsome

Считывает указанное число значений символов.

Этот метод является потенциально опасным, так как зависит от вызывающего объекта при проверке правильности переданных значений.

streamsize readsome( char_type* str, streamsize count); 

Параметры

str
Массив, в котором readsome сохраняет символы, которые считывает.

count
Число символов для чтения.

Возвращаемое значение

Количество символов, которые фактически считываются, gcount .

Замечания

Эта неформатированная входная функция извлекает до count элементов и сохраняет их в массив str .

Эта функция не ожидает входных данных. Она считывает все доступные данные.

Пример

// basic_istream_readsome.cpp // compile with: /EHsc /W3 #include using namespace std; int main( ) < char c[10]; int count = 5; cout 

basic_istream::seekg

Перемещает позицию чтения в потоке.

basic_istream& seekg(pos_type pos); basic_istream& seekg(off_type off, ios_base::seekdir way); 

Параметры

pos
Абсолютное положение, в которое следует переместить указатель чтения.

off
Смещение для перемещения указателя чтения относительно way .

Возвращаемое значение

Замечания

Первая функция-член выполняет как абсолютный поиск, вторая функция-член выполняет относительный поиск.

Не используйте вторую функцию-член с текстовыми файлами, так как стандартный C++ не поддерживает относительный поиск в текстовых файлах.

Если fail это false , первый вызов newpos = rdbuf->pubseekpos(pos) функции-член для некоторых временных pos_type объектов newpos . В противном случае fail false второй вызов newpos = rdbuf->pubseekoff( off, way) функции. В любом случае, если (off_type)newpos == (off_type)(-1) (операция размещения завершается ошибкой), вызов функции istr.setstate(failbit) . Обе функции возвращают значение *this .

Если fail есть true , функции-члены ничего не делают.

Дополнительные сведения см. в разделе rdbuf , pubseekpos , pubseekoff , и setstate .

Пример

// basic_istream_seekg.cpp // compile with: /EHsc #include #include int main ( ) < using namespace std; ifstream file; char c, c1; file.open( "basic_istream_seekg.txt" ); file.seekg(2); // seek to position 2 file >> c; cout

basic_istream::sentry

Вложенный класс описывает объект, объявление которого структурирует форматированные и неформатированные входные функции.

class sentry < public: explicit sentry( basic_istream& _Istr, bool _Noskip = false); operator bool() const; >; 

Замечания

В противном случае _Istr.good true конструктор:

  • Вызовы _Istr.tie->flush , если _Istr.tie не является пустым указателем.
  • Фактически вызывается ws(_Istr) , если _Istr.flags & skipws ненулевое значение.

Если после какой-либо такой подготовки, _Istr.good false конструктор вызывает _Istr.setstate(failbit) . В любом случае конструктор сохраняет значение, возвращаемое _Istr.good в status . Последующий вызов для operator bool доставки этого сохраненного значения.

Дополнительные сведения см. в разделе good , , ws tie flush , , flags , skipws и setstate .

basic_istream::swap

Меняет местами содержимое двух объектов basic_istream .

void swap(basic_istream& right); 

Параметры

right
Ссылка lvalue на объект basic_istream .

Замечания

Вызовы basic_ios::swap(right) функции-члены. Она также обменивает количество извлечения с соответствующим значением для right . Дополнительные сведения см. в разделе basic_ios::swap .

basic_istream::sync

Синхронизирует связанное с потоком устройство ввода с буфером потока.

int sync(); 

Возвращаемое значение

Если rdbuf имеет значение NULL, функция возвращает значение -1. В противном случае вызывается rdbuf->pubsync . Если этот вызов возвращает -1, функция вызывает setstate(badbit) и возвращает -1. В противном случае функция возвращает нуль. Дополнительные сведения см. в разделах pubsync и setstate .

basic_istream::tellg

Сообщает текущую позицию чтения в потоке.

pos_type tellg(); 

Возвращаемое значение

Текущая позиция в потоке.

Замечания

Если fail есть false , функция-член возвращается rdbuf->pubseekoff(0, cur, in) . В противном случае возвращается значение pos_type(-1) . Дополнительные сведения см. в разделах rdbuf и pubseekoff .

Пример

// basic_istream_tellg.cpp // compile with: /EHsc #include #include int main() < using namespace std; ifstream file; char c; streamoff i; file.open("basic_istream_tellg.txt"); i = file.tellg(); file >> c; cout > c; cout

basic_istream::unget

Помещает самый последний считанный символ обратно в поток.

basic_istream& unget(); 

Возвращаемое значение

Замечания

Неформатированная входная функция возвращает предыдущий элемент в потоке, если это возможно, как если бы вызывая rdbuf->sungetc rdbuf , если это пустой указатель, или если вызов sungetc возвращался traits_type::eof , функция вызывает setstate(badbit) . В любом случае она возвращает *this .

Дополнительные сведения см. в статьях sungetc , eof и setstate . Сведения о том, как unget может завершиться сбоем, см. в статье basic_streambuf::sungetc .

Пример

// basic_istream_unget.cpp // compile with: /EHsc #include using namespace std; int main( )
Type 'abc': abc abc 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *