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

📄 o_stream.cc.svn-base

📁 德国Erlangen大学教学操作系统源码。
💻 SVN-BASE
字号:
/*****************************************************************************//* Betriebssysteme                                                           *//*---------------------------------------------------------------------------*//*                                                                           *//*                            O _ S T R E A M                                *//*                                                                           *//*---------------------------------------------------------------------------*//* Die Klasse O_Stream enthaelt die Definition des << Operators fuer die     *//* wichtigsten der vordefinierten Datentypen und realisiert somit die        *//* bekannte Ausgabefunktion der C++ IO_Stream Bibliothek. Zur Zeit wird die  *//* Darstellung von Zeichen, Zeichenketten und ganzen Zahlen unterstuetzt.    *//* Ein weiterer << Operator erlaubt die Verwendung von Manipulatoren.        *//*                                                                           *//* Neben der Klasse O_Stream sind hier auch die Manipulatoren hex, dec, oct  *//* und bin fuer die Wahl der Basis bei der Zahlendarstellung, sowie endl     *//* fuer den Zeilenumbruch definiert.                                         *//*****************************************************************************/#include "object/o_stream.h"////////O_Stream::O_Stream()	: Stringbuffer(){	m_base = 10;}O_Stream::O_Stream(O_Stream &ostr)	: Stringbuffer(ostr){	m_base = ostr.m_base;}O_Stream::~O_Stream(){}O_Stream& O_Stream::operator<< (unsigned char c){	put(c);	return *this;}O_Stream& O_Stream::operator<< (char c){	put(c);	return *this;}O_Stream& O_Stream::operator<< (unsigned short number){	return (*this) << (unsigned long)number;}O_Stream& O_Stream::operator<< (short number){	return (*this) << (long)number;}O_Stream& O_Stream::operator<< (unsigned int number){	return (*this) << (unsigned long)number;}O_Stream& O_Stream::operator<< (int number){	return (*this) << (long)number;}O_Stream& O_Stream::operator<< (unsigned long number){	if(number == 0) {		put('0');		return (*this);	}	char value[sizeof(unsigned long)*8];	int len = 0;	for(; len < (int)sizeof(unsigned long)*8 && number > 0; number /= m_base, len++)		value[len] = itoa(number % m_base);	for(len--; len >= 0; len--)		put(value[len]);	return (*this);}O_Stream& O_Stream::operator<< (long number){	if(number < 0 && m_base == 10) {		put('-');		return (*this) << (unsigned long)(number >= 0 ? number : -number);	} else		return (*this) << (unsigned long) number;}O_Stream& O_Stream::operator<< (void* pointer){	// char *n_ptr = (char *)&pointer;	// unsigned int base_backup = m_base;	// m_base = 16;	// for(int i = sizeof(void*) - 1; i >= 0; i--)		// (*this) << (unsigned int)n_ptr[i];	// m_base = base_backup;		unsigned int *n_ptr = (unsigned int *)&pointer;	unsigned int base_backup = m_base;	m_base = 16;	(*this) << *n_ptr;	m_base = base_backup;		return (*this);}O_Stream& O_Stream::operator<< (char* text){	while(*text)		put(*text++);	return (*this);}O_Stream& O_Stream::operator<< (O_Stream& (*fkt) (O_Stream&)){	return fkt(*this);}void O_Stream::setBase(unsigned int base){	if(base > 1)		m_base = base;}char O_Stream::itoa(unsigned int value) const{	char result = (value & 0x0f) + '0';	if (result > '9')		result = result + ('a' - '0' - 10);	return result;}unsigned long O_Stream::abs(long value){	return (value >= 0) ? value : -value;}const unsigned char O_Stream::special_char::line_terminator = '\n';O_Stream& endl (O_Stream& os){	os << O_Stream::special_char::line_terminator;	return os;}O_Stream& bin (O_Stream& os){	os.setBase(2);	return os;}O_Stream& oct (O_Stream& os){	os.setBase(8);	return os;}O_Stream& dec (O_Stream& os){	os.setBase(10);	return os;}O_Stream& hex (O_Stream& os){	os.setBase(16);	return os;}

⌨️ 快捷键说明

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