?? string.h
字號(hào):
#pragma once
#include "mylib.h"
namespace mylib {
class String {
public:
//構(gòu)造函數(shù)集合
String(void);
String(const char* cha);
String(const String& str);
//運(yùn)算符重載集合
const char* operator= (const char* cha);
const String& operator= (const String& str);
bool operator== (const char* cha) const;
bool operator== (const String& str) const;
char& operator[] (const size_t index) ;
operator std::string(void) { return std::string(_ch); }
//內(nèi)置方法集合
const size_t lenght(void) const;
const char *c_str(void) const;
private:
//私有函數(shù)
void str_init(const size_t lg, const char *cha);
//私有數(shù)據(jù)
char* _ch; //字符串頭指針
size_t _lenght; //字符串長(zhǎng)度
};
//字符串類的流操作符重載
std::ostream& operator<< (std::ostream &os,String &obj)
{
for(size_t i = 0; i <= obj.lenght(); ++i)
os << obj[i];
return os;
}
std::istream& operator>> (std::istream& is,String& obj )
{
for(size_t i = 0; i < obj.lenght();++i)
is >> obj[i];
return is;
}
//私有函數(shù)集合
void String::str_init(const size_t lg, const char *cha)
{
if(!cha)
{
_lenght = 0;
_ch = 0;
}
else
{
_lenght = lg;
_ch = new char [_lenght + 1];
strcpy(_ch,cha);
}
}
//公有函數(shù)集合
//構(gòu)造函數(shù)集合
String::String(){ str_init( 0,0 ); }
String::String(const char *cha)
{
str_init(strlen(cha),cha);
}
String::
String(const String& str)
{
str_init(str._lenght,str._ch);
}
//方法集合
const size_t String::lenght() const { return _lenght;}
const char* String :: c_str() const { return _ch;}
//操作符集合
char& String::operator[] (const size_t index)
{
assert(index >= 0 && index <= _lenght);
return _ch[index];
}
bool String::operator== (const String& str) const
{
if(str._ch)
return false;
if(_lenght != str._lenght)
return false;
if( strcmp(_ch,str._ch) )
return false;
return true;
}
bool String::operator== (const char *cha) const
{
if(cha)
return false;
if( _lenght != strlen(cha) )
return false;
if( strcmp(_ch,cha) )
return false;
return true;
}
const String& String::operator= (const String& str)
{
if(!str._ch)
{
_lenght = 0;
delete [] _ch;
_ch=0;
}
else
{
_lenght = str._lenght;
delete [] _ch;
_ch = new char[_lenght + 1];
strcpy( _ch,str._ch );
}
return *this;
}
const char* String::operator= (const char *cha)
{
if( !cha )
{
_lenght = 0;
delete [] _ch;
_ch = 0;
}
else
{
_lenght = strlen( cha );
delete [] _ch;
_ch = new char[_lenght + 1];
strcpy(_ch,cha);
}
return this->_ch;
}
};
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -