(18)C++ string和标准模板库
原创
©著作权归作者所有:来自51CTO博客作者富坚老贼的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、stringl类
1.string构造函数
string a1("abc");//初始化字符串
cout<<a1<<endl;//abc
string a2(6, '#');//n个字符
cout << a2 << endl;//######
string a3(a1);//复制
cout << a3 << endl;//abc
char c[] = "hello";
string a4(c,3);//从起始截取前n个字符
cout << a4 << endl;//hel
string a5(c+1,c+3);//截取一段字符串
cout << a5 << endl;//el
string a6(c, 1,3);//从n1开始截取n2个
cout << a6 << endl;//ell
2.字符串输入
#include<iostream>
#include<string>
using namespace std;
int main() {
//string str1;
//cin >> str1;//输入字符串方法1
//cout << str1 << endl;
string str2;
getline(cin, str2);//输入字符串方法2
cout << str2 << endl;
}
3.使用字符串
(1)比较字符串 比较ASCII码
int a = 0;
if ('abc' > 'daaa') {
a = 1;
}
else {
a = -1;
}
cout << a << endl;
(2)字符串长度
string a = "abc";
cout << a.length() << endl;
cout << a.size() << endl;
(3)查找
查找是否包含此字符串,有则返回首字符索引,没有返回 npos
string a = "aabc";
cout << a.find("bc111")<<endl;
npos表示字符串可存储的最大字符数
二、智能指针模板类
智能指针定义后,离开代码块指针将过期
auto_ptr<string> str(new string);//C++98方式,过时
unique_ptr<string> str(new string);//C++11 一般使用这个
shared_ptr<string> str(new string);//C++11 如果多个指针指向同一个对象,用这个
三、标准模板库