string字符串。
1.构造函数
- string s;
- string s(ss);
- string s=ss;
- string s(10,'a');
- string s("ssssssss");
- string s(ss,3,6);ss[3]~ss[8]
2.输入输出
- cin>>s只能读入不带空格字符串
- getline(cin,s);可读入一行字符串,包括空格
3.遍历
- 数组方式
- 迭代器方式for(string::iterator it=s.begin();it != s.end(); it++)
4.字符串连接
- s+=s1;
- s.append(s1);//还是第一条好用
5.字符串查换删插
string s,ss;
- string::npos;npos是一个常数,表示不存在的位置
- s.find(ss);在s中查找ss,返回ss第一次出现位置
- s.find(ss,n);从第n个位置起查找ss,返回ss第一次出现位置
- s.find_first_of(ss);s.find_last_of(ss);查找ss中任意字母在s中首次/最后一次出现位置
- s.find_first_not_of(ss);s.find_last_not_of(ss);
- s.rfind();倒着查的find
- s.replace(n1,n2,ss);将s[n1]至s[n1+n2-1]替换为ss
- s.substr(pos, n);截取s中从pos开始的n个字符的子串,并返回
- s.substr(pos);截取s中从从pos开始到末尾的所有字符的子串,并返回
- s.erase(n);删除s[n-1]以后的所有元素
- s.erase(n1,n2);删除s[n1]至s[n1+n2-1]元素
- s.insert(n,ss);在s[n-1]后插入ss
6.反转
- #include <algorithm> reverse(s.begin(),s.end());
7.大小写转化
- transform(s.begin(),s.end(),s.begin(),::toupper);
- transform(s.begin(),s.end(),s.begin(),::tolower);
8.其他
#include <cctype>
- isalnum(c);c是字母或数字,返回true
- isalpha(c);c是字母,返回true
- iscntrl(c);c是控制字符,返回true
- isdigit(c);c是数字,返回true
- isgraph(c);c不是空格,但可打印,为true
- islower(c);c是小写字母,为true
- isprint(c);c是可打印字符,为true
- ispunct(c);c是标点符号,为true
- isspace(c);c是空白,为true
- isupper(c);c是大写字母,为true
- isxdigit(c);c是十六进制的数,为true
- tolower(c);如果c是大写字母,返回其小写字母,否则返回c
- toupper(c);如果c是小写字母,返回其大写字母,否则返回c
9.奇技淫巧
- 按空格分割字符串
#include<iostream>
#include <sstream>
#include<string>
using namespace std;
int main()
{
string s="asd asdgf dgg fghj j a";
istringstream is(s);
string ss;
while(is>>ss)
{
cout<<ss<<endl;
}
return 0;
}
- string转int/double
int main()
{
string s = "123";
double a = atof(s.c_str());
int b = atoi(s.c_str());
return 0;
}
- 另一种转换方法
#include<iostream>
#include <sstream>
#include<string>
using namespace std;
int main()
{
//amaning codes
istringstream is(s);
string ss;
double a;
int b;
is>>a>>b;
return 0;
}