STL常用操作之string篇
简介:
#include<string>
一种数据类型,类似于字符串,但是可以进行一些比字符串更方便的操作,在编程的时候也是经常用到。
1.构造或赋值
string s1; //默认为空串""
string s2(4, 'c'); //长度为4且每个位置的字符均为c
cout << s1 << endl << s2 << endl;
getline(cin, s1); //读取一整行
cin >> s2; //读取一个字符串
cout << s1 << endl << s2 << endl;
2.常用函数与基本操作
string s1 = "abcdef"; //默认为空串""
string s2(4, 'c'); //长度为4且每个位置的字符均为c
s1 += s2; //将s2加到s1的后面,类似于strcat,但是只需要写一个加号
s1.begin(); //获得串s1开始位置的地址
s1.end(); //获得串s1结束位置的后一个位置的地址
s1.empty(); //bool类型,判断s1是否为空串
s1.size(); s1.length(); //得到s1的长度
s1.erase(s1.begin()); //删除s1的第一个元素
s1.erase(2, 3); //删除从位置2开始的三个元素
s1 = "abcdef";
s2 = s1.substr(0, 3); //把s1从0开始取三个元素赋值给s2
s2 = s1.substr(0, -1); //把s1从0开始取到结束赋值给s2
s1.insert(4, "abc"); //把abc插入到第四个位置
s1.replace(4, 3, "good"); //把第四个位置后面的连续三个位置元素替换为good
int in = s1.find("abc"); //从头查找,返回"222"第一次出现的位置,没有返回string::npos
reverse(s1.begin(), s1.end()); //逆置
这里函数比较多,可以自行操作输出查看。
3.常用字符处理函数
isalnum('a'); //判断是否为数字或字母
isalpha('a'); //判断是否为字母
isdigit('a'); //判断是否为数字
islower('a'); //判断是否为小写字母
isupper('a'); //判断是否为大写字母
此处均忽略了返回值,大家可以用if等语句进行尝试。
注意某些编译环境可能需要引用头文件。
#include<cctype>
4.迭代器
string s = "abcdef";
for (string::iterator it = s.begin(); it != s.end(); ++it)
cout << *it;
for (auto it = s.begin(); it != s.end(); ++it)
cout << *it;
for (auto it : s)
cout << it;
注意自动auto比较方便,但是会比较慢!
5.流
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main() {
string s;
getline(cin, s);
stringstream S(s);
while (S >> s)
cout << s << endl;
return 0;
}
注意需要引用头文件sstream。
stringstream对于有时候一整行作为一个处理部分的时候用起来会方便很多。
string简单使用,适用于像我这样的小白快速上手,大神键下留情!
发现问题欢迎指正!
希望能帮助到你!