1 #include <iostream>
2 #include <cstring>
3 using namespace std;
4
5 char findCharByIndex(char* stringValue,int index);
6 int charLength(char* stringValue);
7 char* addCharToString(char* stringValue,char charValue);
8 char* addStringToString(char* stringPFirst,char* stringPTwo);
9 int main()
10 {
11
12 // char* name = "Hell";
13 // char charValue = 'o';
14 // char* resultP = addCharToString(name,charValue);
15 // cout << resultP << endl;
16 // //释放掉new出来的内存
17 // delete [] resultP;
18 // cout << "释放内存成功" << endl;
19
20 char* fName = "Hello";
21 char* lName = "World";
22 char* newName = addStringToString(fName,lName);
23 cout << newName << endl;
24 delete [] newName;
25 cout << "释放内存成功" << endl;
26 return 0;
27 }
28 //根据索引号返回字符串中对应的字符
29 char findCharByIndex(char* stringValue,int index)
30 {
31 return stringValue[index];
32 }
33 //帮助方法
34 //统计字符串的字符个数,方便new数组
35 int charLength(char* stringValue)
36 {
37 int count = 0;
38 while(stringValue[count] != 0)
39 {
40 count++;
41 }
42 //返回字符串的个数 不包含0字符
43 return count;
44 }
45 //将第二个参数的字符添加到第一个参数字符串的末尾 实现添加字符的功能
46 char* addCharToString(char* stringValue,char charValue)
47 {
48 int stringLength = charLength(stringValue);
49 //stringLength+2 +2包含结束标志和新添加入的字符
50 char* newString = new char[stringLength+2];
51 for(int i=0; i<stringLength; i++)
52 {
53 newString[i] = stringValue[i];
54 }
55 //倒数第二个索引是新添加的字符
56 newString[stringLength] = charValue;
57 //最后一个索引添加字符串结束标志
58 newString[stringLength+1] = 0;
59
60 stringValue = newString;
61 return stringValue;
62 }
63 //将第二个参数的字符串添加到第一个参数字符串的末尾 实现添加字符串的功能
64 char* addStringToString(char* stringPFirst,char* stringPTwo)
65 {
66 int stringPFirstLength = charLength(stringPFirst);
67 int stringPTwoLength = charLength(stringPTwo);
68 int resultLength = stringPFirstLength + stringPTwoLength;
69 //+1 包含结束标志字符0
70 char* newP = new char[resultLength+1];
71 for(int i=0; i<stringPFirstLength; i++)
72 {
73 newP[i] = stringPFirst[i];
74 }
75 //将第二个字符串添加到新创建的字符串中
76 for(int i=0; i<stringPTwoLength; i++)
77 {
78 newP[stringPFirstLength+i] = stringPTwo[i];
79 }
80 //最后一个字符是结束字符0
81 newP[resultLength] = 0;
82 return newP;
83 }