当前位置: 首页 > article >正文

ostream头文件

ostream是什么

ostream也是信息流,控制输出

ostream怎么用

单用ostream似乎只能用来解hello world

(程序懒得写,自己写去)

ostream缺失

在C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++添加一个叫ostream的文件(不加后缀名),用c++打开后粘贴如下代码后编译即可修复

// Output streams -*- C++ -*-// Copyright (C) 1997-2014 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 3, 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.// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>./** @file include/ostream*  This is a Standard C++ Library header.*///
// ISO C++ 14882: 27.6.2  Output streams
//#ifndef _GLIBCXX_OSTREAM
#define _GLIBCXX_OSTREAM 1#pragma GCC system_header#include <ios>
#include <bits/ostream_insert.h>namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION/***  @brief  Template class basic_ostream.*  @ingroup io**  @tparam _CharT  Type of character stream.*  @tparam _Traits  Traits for character type, defaults to*                   char_traits<_CharT>.**  This is the base class for all output streams.  It provides text*  formatting of all builtin types, and communicates with any class*  derived from basic_streambuf to do the actual output.*/template<typename _CharT, typename _Traits>class basic_ostream : virtual public basic_ios<_CharT, _Traits>{public:// Types (inherited from basic_ios):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_ostream<_CharT, _Traits>		__ostream_type;typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >__num_put_type;typedef ctype<_CharT>	      			__ctype_type;/***  @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.*/explicitbasic_ostream(__streambuf_type* __sb){ this->init(__sb); }/***  @brief  Base destructor.**  This does very little apart from providing a virtual base dtor.*/virtual~basic_ostream() { }/// Safe prefix/suffix operations.class sentry;friend class sentry;//@{/***  @brief  Interface for manipulators.**  Manipulators such as @c std::endl and @c std::hex use these*  functions in constructs like "std::cout << std::endl".  For more*  information, see the iomanip header.*/__ostream_type&operator<<(__ostream_type& (*__pf)(__ostream_type&)){// _GLIBCXX_RESOLVE_LIB_DEFECTS// DR 60. What is a formatted input function?// The inserters for manipulators are *not* formatted output functions.return __pf(*this);}__ostream_type&operator<<(__ios_type& (*__pf)(__ios_type&)){// _GLIBCXX_RESOLVE_LIB_DEFECTS// DR 60. What is a formatted input function?// The inserters for manipulators are *not* formatted output functions.__pf(*this);return *this;}__ostream_type&operator<<(ios_base& (*__pf) (ios_base&)){// _GLIBCXX_RESOLVE_LIB_DEFECTS// DR 60. What is a formatted input function?// The inserters for manipulators are *not* formatted output functions.__pf(*this);return *this;}//@}//@{/***  @name Inserters**  All the @c operator<< functions (aka <em>formatted output*  functions</em>) have some common behavior.  Each starts by*  constructing a temporary object of type std::basic_ostream::sentry.*  This can have 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 generate*  whatever data is appropriate for the type of the argument.**  If an exception is thrown during insertion, 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 Integer arithmetic inserters*  @param  __n A variable of builtin integral type.*  @return  @c *this if successful**  These functions use the stream's current locale (specifically, the*  @c num_get facet) to perform numeric formatting.*/__ostream_type&operator<<(long __n){ return _M_insert(__n); }__ostream_type&operator<<(unsigned long __n){ return _M_insert(__n); }__ostream_type&operator<<(bool __n){ return _M_insert(__n); }__ostream_type&operator<<(short __n);__ostream_type&operator<<(unsigned short __n){// _GLIBCXX_RESOLVE_LIB_DEFECTS// 117. basic_ostream uses nonexistent num_put member functions.return _M_insert(static_cast<unsigned long>(__n));}__ostream_type&operator<<(int __n);__ostream_type&operator<<(unsigned int __n){// _GLIBCXX_RESOLVE_LIB_DEFECTS// 117. basic_ostream uses nonexistent num_put member functions.return _M_insert(static_cast<unsigned long>(__n));}#ifdef _GLIBCXX_USE_LONG_LONG__ostream_type&operator<<(long long __n){ return _M_insert(__n); }__ostream_type&operator<<(unsigned long long __n){ return _M_insert(__n); }
#endif//@}//@{/***  @brief  Floating point arithmetic inserters*  @param  __f A variable of builtin floating point type.*  @return  @c *this if successful**  These functions use the stream's current locale (specifically, the*  @c num_get facet) to perform numeric formatting.*/__ostream_type&operator<<(double __f){ return _M_insert(__f); }__ostream_type&operator<<(float __f){// _GLIBCXX_RESOLVE_LIB_DEFECTS// 117. basic_ostream uses nonexistent num_put member functions.return _M_insert(static_cast<double>(__f));}__ostream_type&operator<<(long double __f){ return _M_insert(__f); }//@}/***  @brief  Pointer arithmetic inserters*  @param  __p A variable of pointer type.*  @return  @c *this if successful**  These functions use the stream's current locale (specifically, the*  @c num_get facet) to perform numeric formatting.*/__ostream_type&operator<<(const void* __p){ return _M_insert(__p); }/***  @brief  Extracting from 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 @p __sb is NULL, the stream will set failbit in its error state.**  Characters are extracted from @p __sb and inserted into @c *this*  until one of the following occurs:**  - the input stream reaches end-of-file,*  - insertion into the output sequence fails (in this case, the*    character that would have been inserted is not extracted), or*  - an exception occurs while getting a character from @p __sb, which*    sets failbit in the error state**  If the function inserts no characters, failbit is set.*/__ostream_type&operator<<(__streambuf_type* __sb);//@}//@{/***  @name Unformatted Output Functions**  All the unformatted output functions have some common behavior.*  Each starts by constructing a temporary object of type*  std::basic_ostream::sentry.  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 generate*  whatever data is appropriate for the type of the argument.**  If an exception is thrown during insertion, ios_base::badbit*  will be turned on in the stream's error state.  If badbit is on in*  the stream's exceptions mask, the exception will be rethrown*  without completing its actions.*//***  @brief  Simple insertion.*  @param  __c  The character to insert.*  @return  *this**  Tries to insert @p __c.**  @note  This function is not overloaded on signed char and*         unsigned char.*/__ostream_type&put(char_type __c);/***  @brief  Core write functionality, without sentry.*  @param  __s  The array to insert.*  @param  __n  Maximum number of characters to insert.*/void_M_write(const char_type* __s, streamsize __n){const streamsize __put = this->rdbuf()->sputn(__s, __n);if (__put != __n)this->setstate(ios_base::badbit);}/***  @brief  Character string insertion.*  @param  __s  The array to insert.*  @param  __n  Maximum number of characters to insert.*  @return  *this**  Characters are copied from @p __s and inserted into the stream until*  one of the following happens:**  - @p __n characters are inserted*  - inserting into the output sequence fails (in this case, badbit*    will be set in the stream's error state)**  @note  This function is not overloaded on signed char and*         unsigned char.*/__ostream_type&write(const char_type* __s, streamsize __n);//@}/***  @brief  Synchronizing the stream buffer.*  @return  *this**  If @c rdbuf() is a null pointer, changes nothing.**  Otherwise, calls @c rdbuf()->pubsync(), and if that returns -1,*  sets badbit.*/__ostream_type&flush();/***  @brief  Getting the current write position.*  @return  A file position object.**  If @c fail() is not false, returns @c pos_type(-1) to indicate*  failure.  Otherwise returns @c rdbuf()->pubseekoff(0,cur,out).*/pos_typetellp();/***  @brief  Changing the current write position.*  @param  __pos  A file position object.*  @return  *this**  If @c fail() is not true, calls @c rdbuf()->pubseekpos(pos).  If*  that function fails, sets failbit.*/__ostream_type&seekp(pos_type);/***  @brief  Changing the current write position.*  @param  __off  A file offset object.*  @param  __dir  The direction in which to seek.*  @return  *this**  If @c fail() is not true, calls @c rdbuf()->pubseekoff(off,dir).*  If that function fails, sets failbit.*/__ostream_type&seekp(off_type, ios_base::seekdir);protected:basic_ostream(){ this->init(0); }template<typename _ValueT>__ostream_type&_M_insert(_ValueT __v);};/***  @brief  Performs setup work for output streams.**  Objects of this class are created before all of the standard*  inserters are run.  It is responsible for <em>exception-safe prefix and*  suffix operations</em>.*/template <typename _CharT, typename _Traits>class basic_ostream<_CharT, _Traits>::sentry{// Data Members.bool 				_M_ok;basic_ostream<_CharT, _Traits>& 	_M_os;public:/***  @brief  The constructor performs preparatory work.*  @param  __os  The output stream to guard.**  If the stream state is good (@a __os.good() is true), then if the*  stream is tied to another output stream, @c is.tie()->flush()*  is called to synchronize the output sequences.**  If the stream state is still good, then the sentry state becomes*  true (@a okay).*/explicitsentry(basic_ostream<_CharT, _Traits>& __os);/***  @brief  Possibly flushes the stream.**  If @c ios_base::unitbuf is set in @c os.flags(), and*  @c std::uncaught_exception() is true, the sentry destructor calls*  @c flush() on the output stream.*/~sentry(){// XXX MTif (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception()){// Can't call flush directly or else will get into recursive lock.if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)_M_os.setstate(ios_base::badbit);}}/***  @brief  Quick status checking.*  @return  The sentry state.**  For ease of use, sentries may be converted to booleans.  The*  return value is that of the sentry state (true == okay).*/
#if __cplusplus >= 201103Lexplicit
#endifoperator bool() const{ return _M_ok; }};//@{/***  @brief  Character inserters*  @param  __out  An output stream.*  @param  __c  A character.*  @return  out**  Behaves like one of the formatted arithmetic inserters described in*  std::basic_ostream.  After constructing a sentry object with good*  status, this function inserts a single character and any required*  padding (as determined by [22.2.2.2.2]).  @c __out.width(0) is then*  called.**  If @p __c is of type @c char and the character type of the stream is not*  @c char, the character is widened before insertion.*/template<typename _CharT, typename _Traits>inline basic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c){ return __ostream_insert(__out, &__c, 1); }template<typename _CharT, typename _Traits>inline basic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>& __out, char __c){ return (__out << __out.widen(__c)); }// Specializationtemplate <class _Traits>inline basic_ostream<char, _Traits>&operator<<(basic_ostream<char, _Traits>& __out, char __c){ return __ostream_insert(__out, &__c, 1); }// Signed and unsignedtemplate<class _Traits>inline basic_ostream<char, _Traits>&operator<<(basic_ostream<char, _Traits>& __out, signed char __c){ return (__out << static_cast<char>(__c)); }template<class _Traits>inline basic_ostream<char, _Traits>&operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c){ return (__out << static_cast<char>(__c)); }//@}//@{/***  @brief  String inserters*  @param  __out  An output stream.*  @param  __s  A character string.*  @return  out*  @pre  @p __s must be a non-NULL pointer**  Behaves like one of the formatted arithmetic inserters described in*  std::basic_ostream.  After constructing a sentry object with good*  status, this function inserts @c traits::length(__s) characters starting*  at @p __s, widened if necessary, followed by any required padding (as*  determined by [22.2.2.2.2]).  @c __out.width(0) is then called.*/template<typename _CharT, typename _Traits>inline basic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s){if (!__s)__out.setstate(ios_base::badbit);else__ostream_insert(__out, __s,static_cast<streamsize>(_Traits::length(__s)));return __out;}template<typename _CharT, typename _Traits>basic_ostream<_CharT, _Traits> &operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);// Partial specializationstemplate<class _Traits>inline basic_ostream<char, _Traits>&operator<<(basic_ostream<char, _Traits>& __out, const char* __s){if (!__s)__out.setstate(ios_base::badbit);else__ostream_insert(__out, __s,static_cast<streamsize>(_Traits::length(__s)));return __out;}// Signed and unsignedtemplate<class _Traits>inline basic_ostream<char, _Traits>&operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s){ return (__out << reinterpret_cast<const char*>(__s)); }template<class _Traits>inline basic_ostream<char, _Traits> &operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s){ return (__out << reinterpret_cast<const char*>(__s)); }//@}// Standard basic_ostream manipulators/***  @brief  Write a newline and flush the stream.**  This manipulator is often mistakenly used when a simple newline is*  desired, leading to poor buffering performance.  See*  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch25s02.html*  for more on this subject.*/template<typename _CharT, typename _Traits>inline basic_ostream<_CharT, _Traits>&endl(basic_ostream<_CharT, _Traits>& __os){ return flush(__os.put(__os.widen('\n'))); }/***  @brief  Write a null character into the output sequence.**  <em>Null character</em> is @c CharT() by definition.  For CharT*  of @c char, this correctly writes the ASCII @c NUL character*  string terminator.*/template<typename _CharT, typename _Traits>inline basic_ostream<_CharT, _Traits>&ends(basic_ostream<_CharT, _Traits>& __os){ return __os.put(_CharT()); }/***  @brief  Flushes the output stream.**  This manipulator simply calls the stream's @c flush() member function.*/template<typename _CharT, typename _Traits>inline basic_ostream<_CharT, _Traits>&flush(basic_ostream<_CharT, _Traits>& __os){ return __os.flush(); }#if __cplusplus >= 201103L/***  @brief  Generic inserter for rvalue stream*  @param  __os  An input stream.*  @param  __x  A reference to the object being inserted.*  @return  os**  This is just a forwarding function to allow insertion to*  rvalue streams since they won't bind to the inserter functions*  that take an lvalue reference.*/template<typename _CharT, typename _Traits, typename _Tp>inline basic_ostream<_CharT, _Traits>&operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x){ return (__os << __x); }
#endif // C++11_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std#include <bits/ostream.tcc>#endif	/* _GLIBCXX_OSTREAM */

http://www.lryc.cn/news/2414020.html

相关文章:

  • (转)Javascript:history.go()和history.back()的用法与区别
  • Apk逆向_笔记
  • ViewFlipper的使用
  • 我的问题集
  • JPEG的编码步骤
  • 找不到wpcap.dll解决方法
  • 【自然语言处理】统计中文分词技术(一):1、分词与频度统计
  • 利用连按 5 下 Shift 漏洞破解 win7 开机密码(原理以及实现)
  • 【运维】Windows下MRTG入门教程
  • PHP学习记录:PHP快速入门,一篇即可!
  • 超好用的清理软件Wise Disk Cleaner X
  • ClearCase 入门指南-管理员学习路径
  • 智慧方勃探秘江西:走进赣鄱大地的历史与传承
  • Javascript----文件操作
  • 面向对象设计的七大原则
  • Mandelbrot集的最新变化形态一览——MandelBox,Mandelbulb,Burning Ship,NebulaBrot
  • 国内十大免费网络相册
  • WordPress爱导航主题源码
  • Linux系统下如何隐藏自己的进程?
  • 汉字区位码查询与算法
  • removeAttribute() 方法删除指定的属性
  • 一个NB-IoT/4G模组的AT拨号联网流程
  • 纳什均衡及经典案例(2)
  • 如何解决计算机漏洞,我的电脑扫描发现存在这么多安全漏洞,怎么解决呢?
  • office运行时错误,部分系统文件可能丢失或已损坏(错误代码:0x80040154)
  • 动漫迷必备网站
  • ORACLE 10g 安装教程[图文]
  • SQL 常见的几种分页
  • 不看后悔!国内外程序员接单平台大合集!带你一次性了解各个热门接单平台!
  • 阿里 新零售领域的多模态知识图谱的建设与应用