1 #include<iostream>
2 #include<string>
3 #include<stdlib.h>
4 #include<assert.h>
5 using namespace std;
6
7 class String{
8 private:
9 char *str;
10 int size;
11 public:
12 String(char *s);
13 ~String();
14 String operator+(String& s);
15 String operator=(String& s);
16 String Substr(int index,int cout);
17 int Find(char c,int start);
18 }
19
20 String::String(char *s)
21 {
22 size=strlen(s);
23 str=new char[size+1];
24 assert(str!='\0');
25 strcpy(str,s);
26 }
27
28 String::~String()
29 {
30 }
31
32 String String::operator+(String& s)//拼接
33 {
34 String temp="\0";
35 int len;
36 len=size+s.size;
37 delete [] temp.str;
38 temp.str=new char[len+1];
39 assert(temp.str!=NULL);
40 temp.size=len;
41 strcpy(temp.str,str);
42 strcat(temp.str,s.str);
43 return temp;
44 }
45
46 String String::operator=(String& s)//赋值
47 {
48 if(size!=s.size)
49 {
50 delete[]str;
51 str=new char[s.size+1];
52 assert(str!=NULL);
53 size=s.size;
54 }
55 strcpy(str,s.str);
56 return *this;//返回得到的字符串
57 }
58
59 String String::Substr(int index,int count)//提取字符串 index开始下表 cout长度
60 {
61 int i;
62 int left=size-index;
63 String temp=NULL;
64 if(index>=size) return temp;
65 if(count>=left) count=left;
66 delete [] temp.str;
67 temp.str=new char[count+1];
68 assert(temp.str!=NULL);
69 char *p,*q;
70 p=temp.str;
71 q=&str[index];
72 for(int i=0;i<count;i++)
73 *p++=*q++;
74 *p='\0';
75 temp.size=count;
76 return temp;
77 }
78
79 int String::Find(char c,int start)
80 {
81 int i=start;
82 assert(i<size);
83 while(str[i]!='\0'&&str[i]!='c')
84 {
85 i++;
86 }
87 if(str[i]=='\0')
88 return -1;
89 else
90 return i;
91 }
92
93 void main()
94 {
95 char *s;
96 s="qweasd123";
97 String::String(char *s);
98
99 cout<<s;
100 cou<<"12312312";
101
102 }