我能不用char*就不用,而使用C++标准程序库中的string类。string不必担心内存、字符长度等等的问题,并且string作为一个类,它的操作函数能够基本满足我的需要。string使用起来非常简单,我们用=赋值,用==比较是否相同,用+合并字符等等。
使用之前需要包含头文件 #include<string>
1.声明字符,调用构造函数初始化字符串
a.将strA赋值为空字符。
string strA;
b.复制字符串赋初值,将“B"赋值给strB,将strB赋值给strA。
1 string strB("B"); 2 string strA(strB);
c.截取字符串,赋初值
1 #include <string> 2 #include <iostream> 3 using namespace std; 4 int main() 5 { 6 string strA("ABCDEF"); 7 string strB(strA, 1);//从1开始截取到最后 8 cout << strB << endl; 9 string strC(strA, 1, 2);//从1开始截取2位 10 cout << strC << endl; 11 string strD(strA, 1, 20000);//从1开始截取到最后 12 cout << strD << endl; 13 // string strE(strA, 10000, 2);//错误 14 // cout << strE << endl; 15 cin.get(); 16 return 0; 17 }
d.将C字符串作为strA的初值???没搞懂CString?
string strA(cstr); //将CString作为s的初值
e.将C字符串前chars_len个字符作为字符串strA的初值。???没搞懂CString?
string strA(chars,chars_len);
f. string s(num,c) //生成一个字符串,包含num个c字符
g. string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值
h. s.~string() //销毁所有字符,释放内存
2.字符串操作函数
a. =,assign() //赋新值
1 #include <string> 2 #include <iostream> 3 using namespace std; 4 int main() 5 { 6 string strA; 7 8 strA = "A"; 9 cout << strA << endl; 10 11 strA.assign("B"); 12 cout << strA << endl; 13 14 cin.get(); 15 return 0; 16 }
b. swap() //交换两个字符串的内容
1 #include <string> 2 #include <iostream> 3 using namespace std; 4 int main() 5 { 6 string strA("A"); 7 string strB("B"); 8 cout << strA << endl; 9 cout << strB << endl; 10 11 strA.swap(strB); 12 cout << strA << endl; 13 cout << strB << endl; 14 cin.get(); 15 return 0; 16 }
c. +=,append(),push_back() //在尾部添加字符