⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 istream

📁 arm_uclinux_tools用于安装linux的编译器
💻
📖 第 1 页 / 共 2 页
字号:
// Input streams -*- C++ -*-// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003// Free Software Foundation, Inc.//// This file is part of the GNU ISO C++ Library.  This library is free// software; you can redistribute it and/or modify it under the// terms of the GNU General Public License as published by the// Free Software Foundation; either version 2, or (at your option)// any later version.// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License along// with this library; see the file COPYING.  If not, write to the Free// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,// USA.// As a special exception, you may use this file as part of a free software// library without restriction.  Specifically, if other files instantiate// templates or use macros or inline functions from this file, or you compile// this file and link it with other files to produce an executable, this// file does not by itself cause the resulting executable to be covered by// the GNU General Public License.  This exception does not however// invalidate any other reasons why the executable file might be covered by// the GNU General Public License.//// ISO C++ 14882: 27.6.1  Input streams///** @file istream *  This is a Standard C++ Library header.  You should @c #include this header *  in your programs, rather than any of the "st[dl]_*.h" implementation files. */#ifndef _GLIBCXX_ISTREAM#define _GLIBCXX_ISTREAM 1#pragma GCC system_header#include <ios>#include <limits> // For numeric_limitsnamespace std{  // [27.6.1.1] Template class basic_istream  /**   *  @brief  Controlling input.   *   *  This is the base class for all input streams.  It provides text   *  formatting of all builtin types, and communicates with any class   *  derived from basic_streambuf to do the actual input.  */  template<typename _CharT, typename _Traits>    class basic_istream : virtual public basic_ios<_CharT, _Traits>    {    public:      // Types (inherited from basic_ios (27.4.4)):      typedef _CharT                     		char_type;      typedef typename _Traits::int_type 		int_type;      typedef typename _Traits::pos_type 		pos_type;      typedef typename _Traits::off_type 		off_type;      typedef _Traits                    		traits_type;            // Non-standard Types:      typedef basic_streambuf<_CharT, _Traits> 		__streambuf_type;      typedef basic_ios<_CharT, _Traits>		__ios_type;      typedef basic_istream<_CharT, _Traits>		__istream_type;      typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >         							__num_get_type;      typedef ctype<_CharT>           			__ctype_type;      template<typename _CharT2, typename _Traits2>        friend basic_istream<_CharT2, _Traits2>&        operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2&);       template<typename _CharT2, typename _Traits2>        friend basic_istream<_CharT2, _Traits2>&        operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);     protected:      // Data Members:      /**       *  @if maint       *  The number of characters extracted in the previous unformatted       *  function; see gcount().       *  @endif      */      streamsize 		_M_gcount;    public:      // [27.6.1.1.1] constructor/destructor      /**       *  @brief  Base constructor.       *       *  This ctor is almost never called by the user directly, rather from       *  derived classes' initialization lists, which pass a pointer to       *  their own stream buffer.      */      explicit       basic_istream(__streambuf_type* __sb): _M_gcount(streamsize(0))      { this->init(__sb); }      /**       *  @brief  Base destructor.       *       *  This does very little apart from providing a virtual base dtor.      */      virtual       ~basic_istream()       { _M_gcount = streamsize(0); }      // [27.6.1.1.2] prefix/suffix      class sentry;      friend class sentry;      // [27.6.1.2] formatted input      // [27.6.1.2.3] basic_istream::operator>>      //@{      /**       *  @brief  Interface for manipulators.       *       *  Manuipulators such as @c std::ws and @c std::dec use these       *  functions in constructs like "std::cin >> std::ws".  For more       *  information, see the iomanip header.      */      inline __istream_type&      operator>>(__istream_type& (*__pf)(__istream_type&));      inline __istream_type&      operator>>(__ios_type& (*__pf)(__ios_type&));      inline __istream_type&      operator>>(ios_base& (*__pf)(ios_base&));      //@}            // [27.6.1.2.2] arithmetic extractors      /**       *  @name Arithmetic Extractors       *       *  All the @c operator>> functions (aka <em>formatted input       *  functions</em>) have some common behavior.  Each starts by       *  constructing a temporary object of type std::basic_istream::sentry       *  with the second argument (noskipws) set to false.  This has several       *  effects, concluding with the setting of a status flag; see the       *  sentry documentation for more.       *       *  If the sentry status is good, the function tries to extract       *  whatever data is appropriate for the type of the argument.       *       *  If an exception is thrown during extraction, ios_base::badbit       *  will be turned on in the stream's error state without causing an       *  ios_base::failure to be thrown.  The original exception will then       *  be rethrown.      */      //@{      /**       *  @brief  Basic arithmetic extractors       *  @param  A variable of builtin type.       *  @return  @c *this if successful       *       *  These functions use the stream's current locale (specifically, the       *  @c num_get facet) to parse the input data.      */      __istream_type&       operator>>(bool& __n);            __istream_type&       operator>>(short& __n);            __istream_type&       operator>>(unsigned short& __n);      __istream_type&       operator>>(int& __n);            __istream_type&       operator>>(unsigned int& __n);      __istream_type&       operator>>(long& __n);            __istream_type&       operator>>(unsigned long& __n);#ifdef _GLIBCXX_USE_LONG_LONG      __istream_type&       operator>>(long long& __n);      __istream_type&       operator>>(unsigned long long& __n);#endif      __istream_type&       operator>>(float& __f);      __istream_type&       operator>>(double& __f);      __istream_type&       operator>>(long double& __f);      __istream_type&       operator>>(void*& __p);      /**       *  @brief  Extracting into another streambuf.       *  @param  sb  A pointer to a streambuf       *       *  This function behaves like one of the basic arithmetic extractors,       *  in that it also constructs a sentry object and has the same error       *  handling behavior.       *       *  If @a sb is NULL, the stream will set failbit in its error state.       *       *  Characters are extracted from this stream and inserted into the       *  @a sb streambuf until one of the following occurs:       *       *  - the input stream reaches end-of-file,       *  - insertion into the output buffer fails (in this case, the       *    character that would have been inserted is not extracted), or       *  - an exception occurs (and in this case is caught)       *       *  If the function inserts no characters, failbit is set.      */      __istream_type&       operator>>(__streambuf_type* __sb);      //@}            // [27.6.1.3] unformatted input      /**       *  @brief  Character counting       *  @return  The number of characters extracted by the previous       *           unformatted input function dispatched for this stream.      */      inline streamsize       gcount() const       { return _M_gcount; }            /**       *  @name Unformatted Input Functions       *       *  All the unformatted input functions have some common behavior.       *  Each starts by constructing a temporary object of type       *  std::basic_istream::sentry with the second argument (noskipws)       *  set to true.  This has several effects, concluding with the       *  setting of a status flag; see the sentry documentation for more.       *       *  If the sentry status is good, the function tries to extract       *  whatever data is appropriate for the type of the argument.       *       *  The number of characters extracted is stored for later retrieval       *  by gcount().       *       *  If an exception is thrown during extraction, ios_base::badbit       *  will be turned on in the stream's error state without causing an       *  ios_base::failure to be thrown.  The original exception will then       *  be rethrown.      */      //@{      /**       *  @brief  Simple extraction.       *  @return  A character, or eof().       *       *  Tries to extract a character.  If none are available, sets failbit       *  and returns traits::eof().      */      int_type       get();      /**       *  @brief  Simple extraction.       *  @param  c  The character in which to store data.       *  @return  *this       *       *  Tries to extract a character and store it in @a c.  If none are       *  available, sets failbit and returns traits::eof().       *       *  @note  This function is not overloaded on signed char and       *         unsigned char.      */      __istream_type&       get(char_type& __c);      /**       *  @brief  Simple multiple-character extraction.       *  @param  s  Pointer to an array.       *  @param  n  Maximum number of characters to store in @a s.       *  @param  delim  A "stop" character.       *  @return  *this       *       *  Characters are extracted and stored into @a s until one of the       *  following happens:       *       *  - @c n-1 characters are stored       *  - the input sequence reaches EOF       *  - the next character equals @a delim, in which case the character       *    is not extracted       *       * If no characters are stored, failbit is set in the stream's error       * state.       *       * In any case, a null character is stored into the next location in       * the array.       *       *  @note  This function is not overloaded on signed char and       *         unsigned char.      */      __istream_type&       get(char_type* __s, streamsize __n, char_type __delim);      /**       *  @brief  Simple multiple-character extraction.       *  @param  s  Pointer to an array.       *  @param  n  Maximum number of characters to store in @a s.       *  @return  *this       *       *  Returns @c get(s,n,widen('\n')).      */      inline __istream_type&       get(char_type* __s, streamsize __n)      { return this->get(__s, __n, this->widen('\n')); }      /**       *  @brief  Extraction into another streambuf.       *  @param  sb  A streambuf in which to store data.       *  @param  delim  A "stop" character.       *  @return  *this       *       *  Characters are extracted and inserted into @a sb until one of the       *  following happens:       *       *  - the input sequence reaches EOF       *  - insertion into the output buffer fails (in this case, the       *    character that would have been inserted is not extracted)       *  - the next character equals @a delim (in this case, the character       *    is not extracted)       *  - an exception occurs (and in this case is caught)       *       * If no characters are stored, failbit is set in the stream's error       * state.      */      __istream_type&      get(__streambuf_type& __sb, char_type __delim);      /**       *  @brief  Extraction into another streambuf.       *  @param  sb  A streambuf in which to store data.       *  @return  *this       *       *  Returns @c get(sb,widen('\n')).      */      inline __istream_type&      get(__streambuf_type& __sb)      { return this->get(__sb, this->widen('\n')); }      /**       *  @brief  String extraction.       *  @param  s  A character array in which to store the data.       *  @param  n  Maximum number of characters to extract.       *  @param  delim  A "stop" character.       *  @return  *this       *       *  Extracts and stores characters into @a s until one of the       *  following happens.  Note that these criteria are required to be       *  tested in the order listed here, to allow an input line to exactly       *  fill the @a s array without setting failbit.       *       *  -# the input sequence reaches end-of-file, in which case eofbit       *     is set in the stream error state       *  -# the next character equals @c delim, in which case the character       *     is extracted (and therefore counted in @c gcount()) but not stored       *  -# @c n-1 characters are stored, in which case failbit is set       *     in the stream error state       *       *  If no characters are extracted, failbit is set.  (An empty line of       *  input should therefore not cause failbit to be set.)       *       *  In any case, a null character is stored in the next location in       *  the array.      */      __istream_type&       getline(char_type* __s, streamsize __n, char_type __delim);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -