Skip to content

Commit 1faddfd

Browse files
author
Torben
committed
FERTIG
1 parent 825a5de commit 1faddfd

File tree

3 files changed

+51
-6
lines changed

3 files changed

+51
-6
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@
2626
*.exe
2727
*.out
2828
*.app
29+
/Debug/

src/String.cpp

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff 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

2333
String::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

2742
String::~String() {
2843
delete[] str;
2944
}
3045

3146
char& String::operator[](int index) {
32-
// TODO
47+
return str[index];
3348
}
3449

3550
String& 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

3961
String& 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
}

src/testString.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,18 @@ ostream& operator<<(ostream &out, String &s) {
1111
int 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
}

0 commit comments

Comments
 (0)