[istream.general] # 31 Input/output library [[input.output]](./#input.output) ## 31.7 Formatting and manipulators [[iostream.format]](iostream.format#istream.general) ### 31.7.5 Input streams [[input.streams]](input.streams#istream.general) #### 31.7.5.2 Class template basic_istream [[istream]](istream#general) #### 31.7.5.2.1 General [istream.general] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L4296) When a function is specified with a type placeholder of *extended-floating-point-type*, the implementation provides overloads for all cv-unqualified extended floating-point types ([[basic.fundamental]](basic.fundamental "6.9.2 Fundamental types")) in lieu of *extended-floating-​point-type*[.](#1.sentence-1) [🔗](#lib:basic_istream) namespace std {template>class basic_istream : virtual public basic_ios {public:// types (inherited from [basic_ios](ios "31.5.4 Class template basic_­ios [ios]"))using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; using off_type = typename traits::off_type; using traits_type = traits; // [[istream.cons]](istream.cons "31.7.5.2.2 Constructors"), constructor/destructorexplicit basic_istream(basic_streambuf* sb); virtual ~basic_istream(); // [[istream.sentry]](istream.sentry "31.7.5.2.4 Class basic_­istream​::​sentry"), prefix/suffixclass sentry; // [[istream.formatted]](istream.formatted "31.7.5.3 Formatted input functions"), formatted input basic_istream& operator>>(basic_istream& (*pf)(basic_istream&)); basic_istream& operator>>(basic_ios& (*pf)(basic_ios&)); basic_istream& operator>>(ios_base& (*pf)(ios_base&)); basic_istream& operator>>(bool& n); basic_istream& operator>>(short& n); basic_istream& operator>>(unsigned short& n); basic_istream& operator>>(int& n); basic_istream& operator>>(unsigned int& n); basic_istream& operator>>(long& n); basic_istream& operator>>(unsigned long& n); basic_istream& operator>>(long long& n); basic_istream& operator>>(unsigned long long& n); basic_istream& operator>>(float& f); basic_istream& operator>>(double& f); basic_istream& operator>>(long double& f); basic_istream& operator>>(*extended-floating-point-type*& f); basic_istream& operator>>(void*& p); basic_istream& operator>>(basic_streambuf* sb); // [[istream.unformatted]](istream.unformatted "31.7.5.4 Unformatted input functions"), unformatted input streamsize gcount() const; int_type get(); basic_istream& get(char_type& c); basic_istream& get(char_type* s, streamsize n); basic_istream& get(char_type* s, streamsize n, char_type delim); basic_istream& get(basic_streambuf& sb); basic_istream& get(basic_streambuf& sb, char_type delim); basic_istream& getline(char_type* s, streamsize n); basic_istream& getline(char_type* s, streamsize n, char_type delim); basic_istream& ignore(streamsize n = 1, int_type delim = traits::eof()); basic_istream& ignore(streamsize n, char_type delim); int_type peek(); basic_istream& read (char_type* s, streamsize n); streamsize readsome(char_type* s, streamsize n); basic_istream& putback(char_type c); basic_istream& unget(); int sync(); pos_type tellg(); basic_istream& seekg(pos_type); basic_istream& seekg(off_type, ios_base::seekdir); protected:// [[istream.cons]](istream.cons "31.7.5.2.2 Constructors"), copy/move constructor basic_istream(const basic_istream&) = delete; basic_istream(basic_istream&& rhs); // [[istream.assign]](istream.assign "31.7.5.2.3 Assignment and swap"), assignment and swap basic_istream& operator=(const basic_istream&) = delete; basic_istream& operator=(basic_istream&& rhs); void swap(basic_istream& rhs); }; // [[istream.extractors]](istream.extractors "31.7.5.3.3 basic_­istream​::​operator>>"), character extraction templatestemplate basic_istream& operator>>(basic_istream&, charT&); template basic_istream& operator>>(basic_istream&, unsigned char&); template basic_istream& operator>>(basic_istream&, signed char&); template basic_istream& operator>>(basic_istream&, charT(&)[N]); template basic_istream& operator>>(basic_istream&, unsigned char(&)[N]); template basic_istream& operator>>(basic_istream&, signed char(&)[N]);} [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L4399) The class templatebasic_istream defines a number of member function signatures that assist in reading and interpreting input from sequences controlled by a stream buffer[.](#2.sentence-1) [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L4406) Two groups of member function signatures share common properties: the[*formatted input functions*](#def:formatted_input_functions) (or[*extractors*](#def:extractors)) and the[*unformatted input functions.*](#def:unformatted_input_functions.) Both groups of input functions are described as if they obtain (or[*extract*](#def:extract)) input[*characters*](#def:characters) by callingrdbuf()->sbumpc() orrdbuf()->sgetc()[.](#3.sentence-1) They may use other public members ofistream[.](#3.sentence-2)