_strstream.h
来自「stl的源码」· C头文件 代码 · 共 166 行
H
166 行
/* * Copyright (c) 1999 * Silicon Graphics Computer Systems, Inc. * * Copyright (c) 1999 * Boris Fomitchev * * This material is provided "as is", with absolutely no warranty expressed * or implied. Any use is at your own risk. * * Permission to use or copy this software for any purpose is hereby granted * without fee, provided the above notices are retained on all copies. * Permission to modify the code and to distribute modified code is granted, * provided the above notices are retained, and a notice that the code was * modified is included with the above copyright notice. * */#ifndef _STLP_INTERNAL_STRSTREAM#define _STLP_INTERNAL_STRSTREAM#ifndef _STLP_INTERNAL_STREAMBUF# include <stl/_streambuf.h>#endif#ifndef _STLP_INTERNAL_ISTREAM# include <stl/_istream.h> // Includes <ostream>, <ios>, <iosfwd>#endif#ifndef _STLP_INTERNAL_STRING_H# include <stl/_string.h>#endif_STLP_BEGIN_NAMESPACE#ifndef _STLP_USE_NAMESPACES# define strstream _STLP_strstream# define ostrstream _STLP_ostrstream# define istrstream _STLP_istrstream# define strstreambuf _STLP_strstreambuf#endif//----------------------------------------------------------------------// Class strstreambuf, a streambuf class that manages an array of char.// Note that this class is not a template.class _STLP_CLASS_DECLSPEC strstreambuf : public basic_streambuf<char, char_traits<char> > {public: // Types. typedef char_traits<char> _Traits; typedef basic_streambuf<char, char_traits<char> > _Base; typedef void* (*__alloc_fn)(size_t); typedef void (*__free_fn)(void*);public: // Constructor, destructor explicit strstreambuf(streamsize _Initial_capacity = 0); strstreambuf(__alloc_fn, __free_fn); strstreambuf(char* __get, streamsize __n, char* __put = 0); strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0); strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0); strstreambuf(const char* __get, streamsize __n); strstreambuf(const signed char* __get, streamsize __n); strstreambuf(const unsigned char* __get, streamsize __n); virtual ~strstreambuf();public: // strstreambuf operations. void freeze(bool = true); char* str(); int pcount() const;protected: // Overridden virtual member functions. virtual int_type overflow(int_type __c = _Traits::eof()); virtual int_type pbackfail(int_type __c = _Traits::eof()); virtual int_type underflow(); virtual _Base* setbuf(char* __buf, streamsize __n); virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir, ios_base::openmode __mode = ios_base::in | ios_base::out); virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode = ios_base::in | ios_base::out);private: // Helper functions. // Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun. char* _M_alloc(size_t); void _M_free(char*); // Helper function used in constructors. void _M_setup(char* __get, char* __put, streamsize __n);private: // Data members. __alloc_fn _M_alloc_fun; __free_fn _M_free_fun; bool _M_dynamic : 1; bool _M_frozen : 1; bool _M_constant : 1;};//----------------------------------------------------------------------// Class istrstream, an istream that manages a strstreambuf.class _STLP_CLASS_DECLSPEC istrstream : public basic_istream<char, char_traits<char> > {public: explicit istrstream(char*); explicit istrstream(const char*); istrstream(char* , streamsize); istrstream(const char*, streamsize); virtual ~istrstream(); strstreambuf* rdbuf() const; char* str();private: strstreambuf _M_buf;};//----------------------------------------------------------------------// Class ostrstreamclass _STLP_CLASS_DECLSPEC ostrstream : public basic_ostream<char, char_traits<char> >{public: ostrstream(); ostrstream(char*, int, ios_base::openmode = ios_base::out); virtual ~ostrstream(); strstreambuf* rdbuf() const; void freeze(bool = true); char* str(); int pcount() const;private: strstreambuf _M_buf;};//----------------------------------------------------------------------// Class strstreamclass _STLP_CLASS_DECLSPEC strstream : public basic_iostream<char, char_traits<char> > {public: typedef char char_type; typedef char_traits<char>::int_type int_type; typedef char_traits<char>::pos_type pos_type; typedef char_traits<char>::off_type off_type; strstream(); strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out); virtual ~strstream(); strstreambuf* rdbuf() const; void freeze(bool = true); int pcount() const; char* str();private: strstreambuf _M_buf; //explicitely defined as private to avoid warnings: strstream(strstream const&); strstream& operator = (strstream const&);};_STLP_END_NAMESPACE#endif /* _STLP_INTERNAL_STRSTREAM */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?