| 上一篇:C/C++中利用空指针简化代码,提高效率 下一篇:关于拷贝构造函数和赋值运算符 |
| 自定义类_string类 |
|
|
|
|
| 来源: 作者: 添加日期:2006-7-17 6:47:08 点击次数: |
|
//////////////////////////////////////////////////////////// // string类源程序 // 时间: 2005-11-2 // 程序员: 黄江斌( blog主页 http://blog.csdn.net/zerodspace // 开发平台: VC++6.0<<单文件程序>> ////////////////////////////////////////////////////////////
#include "iostream.h"
//////////////////////////////////////////////////////////// // string类声明部分 // 时间: 2005-11-2 // 程序员: 黄江斌 //////////////////////////////////////////////////////////// #include "string.h" #define TRIM_LEFT 1 #define TRIM_RIGHT 2 #define TRIM_BOTH 0
class string { public: string(); string( const char *src ); string( string &src ); ~string(); //操作符重载 void operator = ( const char *src ); //char * operator + ( string &add2 ); string operator + ( string &add2 ); operator char *(); //成员函数 const char *ToString(); char GetAt( int index ); int Len(); int FindFirstSub( string substr , int start ); bool InStr( string substr ); string Trim( int part ); string Left( int sublen ); string Right( int sublen ); string Mid( int start , int sublen ); void Replace( string strNeedReplaced , string strReplace );
private: char *str; int len; }; //////////////////////////////////////////////////////////// // string类实现部分 // 时间: 2005-11-2 // 程序员: 黄江斌 ////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////// // string在构造、析构函数 // string() // string( const char *src ) // string( string &src ) // ~string()
string::string() { len = 0; str = new char(len+1); str[0] = 0; } string::string( const char *src ) { len = strlen(src); str = new char(len+1); strcpy( str , src ); } string::string( string &src ) { len = src.Len(); str = new char(len+1); strcpy( str , (char*)src ); } string::~string() { }
//////////////////////////////////////////////////////////// // string类操作符重载 // string operator = ( const char *src ) // string operator + ( string &add2 ) // operator char *()
void string::operator = ( const char *src ) { len = strlen(src); str = new char(len+1); strcpy( str , src ); } string string::operator + ( string &add2 ) { int len2 = add2.Len(); int len0 = len + len2; char *str0 = new char(len0+1); strcpy( str0 , str ); strcat( str0 , (char*)add2 ); string sum(str0); return sum; } string::operator char *() { return str; }
//////////////////////////////////////////////////////////// // string类功能函数 // const char *ToString() // char GetAt( int index ) // int Len() // int FindFirstSub( string substr , int start = 0 ) // bool InStr( string substr ) // string Trim( int part ) // string Left() // string Right() // string Mid() // void Replace( string strNeedReplaced , string strReplace )
const char *string::ToString() { return str; } // //得到内存编号为index的字符 char string::GetAt( int index ) { return str[index]; } // //得到字符串的长度 int string::Len() { return len; } // //得到start后(包括start)子串substr的内存编号 int string::FindFirstSub( string substr , int start = 0 ) { if( start > len ) return -1; for( int i = start ; i <= len - substr.Len() ; i++ ) { if( str[i] == substr.GetAt(0) ) { bool flag = true; |
|
| |
|