File tree Expand file tree Collapse file tree 3 files changed +51
-6
lines changed
Expand file tree Collapse file tree 3 files changed +51
-6
lines changed Original file line number Diff line number Diff line change 2626* .exe
2727* .out
2828* .app
29+ /Debug /
Original file line number Diff line number Diff line change @@ -16,26 +16,60 @@ String::String(char c) {
1616 str[1 ] = ' \0 ' ;
1717}
1818
19- String::String (const char *s) {
20- // TODO
19+ String::String (const char * s) {
20+ size = 0 ;
21+ const char * temp = s;
22+ while (*temp != ' \0 ' ) {
23+ size++;
24+ temp++;
25+ }
26+ str = new char [size + 1 ];
27+ for (int i = 0 ; i < size; i++) {
28+ str[i] = s[i];
29+ }
30+ str[size] = ' \0 ' ;
2131}
2232
2333String::String (const String& s) {
24- // TODO
34+ size = s.size ;
35+ str = new char [size + 1 ];
36+ for (int i = 0 ; i < size; i++) {
37+ str[i] = s.str [i];
38+ }
39+ str[size] = ' \0 ' ;
2540}
2641
2742String::~String () {
2843 delete[] str;
2944}
3045
3146char & String::operator [](int index) {
32- // TODO
47+ return str[index];
3348}
3449
3550String& String::operator =(String& s) {
36- // TODO
51+ delete[] str;
52+ size = s.size ;
53+ str = new char [size + 1 ];
54+ for (int i = 0 ; i < size; i++) {
55+ str[i] = s.str [i];
56+ }
57+ str[size] = ' \0 ' ;
58+ return *this ;
3759}
3860
3961String& String::operator +=(String& s) {
40- // TODO
62+ int newSize = size + s.size ;
63+ char * newStr = new char [newSize + 1 ];
64+ for (int i = 0 ; i < size; i++) {
65+ newStr[i] = str[i];
66+ }
67+ for (int i = 0 ; i < s.size ; i++) {
68+ newStr[size + i] = s.str [i];
69+ }
70+ newStr[newSize] = ' \0 ' ;
71+ size = newSize;
72+ delete[] str;
73+ str = newStr;
74+ return *this ;
4175}
Original file line number Diff line number Diff line change @@ -11,8 +11,18 @@ ostream& operator<<(ostream &out, String &s) {
1111int main () {
1212 String s;
1313 String s2 (' H' );
14+ String s3 (" Hallo" );
15+ String s4 (s3);
16+ String s5 = s3;
17+ String s6 = (" ABC" );
18+ s6 += s3;
1419
1520 cout << s << endl;
1621 cout << s2 << endl;
22+ cout << s3 << endl;
23+ cout << s4 << endl;
24+ cout << s4[1 ] << endl;
25+ cout << s5 << endl;
26+ cout << s6 << endl;
1727
1828}
You can’t perform that action at this time.
0 commit comments