dlg_stream_input.h
字号:
/************************************************************//* *//* Predefined char stream: Input from (c++) stream. *//* *//* By Hubert Holin (Hubert.Holin@Bigfoot.com), 1998. *//* *//* This is completely free stuff, do whatever you want with *//* it (but then, I will take no responsability for whatever *//* may happen if you do either... caveat emptor!). *//* *//************************************************************/#ifndef _DLG_STREAM_INPUT_H#define _DLG_STREAM_INPUT_H#include PCCTS_ISTREAM_HPCCTS_NAMESPACE_STD#ifndef DLGX_H#include "DLexerBase.h"#endif// NOTES: The semantics of the copy constructor// and the affectation operator may be unwaranted...// and the stream may not be reset.//// It would have been so much nicer for nextChar()// to throw (of for the DLGInputStream to change status)// upon hiting EOF than to return an "int"...template < class E, class T = ::std::char_traits<E> >class DLG_stream_input : public DLGInputStream{public: DLG_stream_input(::std::basic_istream<E,T> * p_input_stream) : input(p_input_stream) { // nothing to do! }; DLG_stream_input(const DLG_stream_input & a_recopier) : input(a_recopier.input) { // nothing to do! }; virtual ~DLG_stream_input() { this->purge(); // bloody templarized lookup... }; DLG_stream_input operator = (const DLG_stream_input & a_affecter) { if (this != &a_affecter) { input = a_affecter.input; } return(*this); }; virtual int nextChar() { E extracted_stuff; input->get(extracted_stuff); if (*input) { return(int(extracted_stuff)); } else { return(EOF); } }; protected: ::std::basic_istream<E,T> * input; private: void purge() { // nothing to do! };};#endif /* _DLG_STREAM_INPUT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -