阅读量:0
1.介绍
string是一个字符串类,和char类型类似,string是动态的,会自动调整大小,节省了不必要的空间。
1.初始化及定义
//头文件 #include<string> //1. string str1; //生成空字符串 //2. string str2("123456789"); //生成"1234456789"的复制品 //3. string str3("12345", 0, 3);//结果为"123" ,从0位置开始,长度为3 //4. string str4("123456", 5); //结果为"12345" ,长度为5 //5. string str5(5, '2'); //结果为"22222" ,构造5个字符'2'连接而成的字符串 //6. string str6(str2, 2); //结果为"3456789",截取第三个元素(2对应第三位)到最后
2.读入问题
读入字符,遇空格读入结束
string s; cin >> s;
读入一行字符串(包括空格),遇回车结束
string s; getline(cin, s);
注意:getline(cin, s)
会获取前一个输入的换行符,需要在前面添加读取换行符的语句。如:getchar()
或 cin.get()
例如错误读取:
int n; string s; cin >> n; getline(cin, s); //此时读取相当于读取了前一个回车字符
正确读取:
int n; string s; cin >> n; getchar(); //cin.get() getline(cin, s);//可正确读入下一行的输入
2.函数方法
1.插入
代码 | 含义 |
---|---|
s.push_back() | 在末尾插入 |
例:s.push_back('a') | 末尾插入一个字符a |
s.insert(pos,ele) | 在pos位置插入元素 |
例:s.insert(s.begin(),'1') | 在第一个位置插入 '1'字符 |
s.append(str) | 在s字符串结尾添加str字符串 |
例:s.append("abc") | 在s字符串末尾添加字符串"abc" |
2.删除
代码 | 含义 |
---|---|
erase(iterator p) | 删除字符串中p所指的字符 |
erase(iterator fir,iterator last) | 删除迭代器区间[fir,end)上所有字符 |
erase(pos,len) | 删除字符串从索引位置pos开始的len个字符 |
clear() | 删除字符串中所有字符 |
3.字符替换
代码 | 含义 |
---|---|
s.replace(pos,n,str) | 把当前字符串从索引位置pos开始的n个字符替换为str |
s.replace(pos,n,m,c) | 把当前字符串从索引位置pos开始的n个字符替换为m个字符c |
s.replace(it1,it2,str) | 把当前字符串[it1,it2)区间替换为str,it1,it2为迭代器 |
4.大小写转换
代码 | 含义 |
---|---|
tolower(s[i]) | 转换为小写 |
toupper(s[i]) | 转换为大写 |
5.分割
代码 | 含义 |
---|---|
s.substr(pos,n) | 截取从pos索引开始的个字符 |
6.查找
代码 | 含义 |
---|---|
s.find(str,pos) | 在当前字符串的pos索引位置(默认为0)开始,查找子串str,返回找到的位置索引,-1表示查找不到子串 |
7.排序
sort(s.begin(),s.end())
#include<string> #include<iostream> int main() { string s("dog bird chicken bird cat"); //字符串查找-----找到后返回首字母在字符串中的下标 // 1. 查找一个字符串 cout << s.find("chicken") << endl;// 结果是:9 // 2. 从下标为6开始找字符'i',返回找到的第一个i的下标 cout << s.find('i',6) << endl;// 结果是:11 // 3. 从字符串的末尾开始查找字符串,返回的还是首字母在字符串中的下标 cout << s.rfind("chicken") << endl;// 结果是:9 // 4. 从字符串的末尾开始查找字符 cout << s.rfind('i') << endl;// 结果是:18因为是从末尾开始查找,所以返回第一次找到的字符 // 5. 在该字符串中查找第一个属于字符串s的字符 cout << s.find_first_of("13br98") << endl;// 结果是:4---b // 6. 在该字符串中查找第一个不属于字符串s的字符------先匹配dog,然后bird匹配不到,所以打印4 cout << s.find_first_not_of("hello dog 2006") << endl; // 结果是:4 cout << s.find_first_not_of("dog bird 2006") << endl; // 结果是:9 // 7. 在该字符串最后中查找第一个属于字符串s的字符 cout << s.find_last_of("13r98") << endl;// 结果是:19 // 8. 在该字符串最后中查找第一个不属于字符串s的字符------先匹配t--a---c,然后空格匹配不到,所以打印21 cout << s.find_last_not_of("teac") << endl;// 结果是:21 }