定义与简单访问
string s;
cin>>s;
for(int i=1;i<=sizeof(s);i++)
cout<<s[i]<<" ";
string数组
string s[10];
这是定义一个字符串数组,s[1]="apple"即为赋值,其使用与一般数组使用相似。
字符串的比较与排序
字符串的比较可以使用 '>' '<'直接比较,其比较方法是按照字典顺序进行比较,例如
string s1,s2;
s1="apple";
s2="po";
if(s1>s2)
cout<<"1";
else
cout<<"2";
结果即为2.
当我们排序时,用循环比较不方便,我们也可以用sort排序对字符串排序,sort( s.begin( ),s.end( ) ),其排序方法也是按照字典顺序进行排序,例:
string s[10];
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s[i];
}
sort(s+1,s+n+1);
for(int i=1;i<=n;i++)
{
cout<<s[i]<<endl;
}
当输入为
3
harmony
happy
student
输出结果为
happy
harmony
student
string有关函数
获取字符串长度
s.size()
s.length();
插入
代码 | 含义 |
---|---|
1 s.push_back('a') | 在末尾插入a |
2 s.insert(x,'a') | 在x位置插入a |
3 s.append("happy") | 在s字符串结尾添加happy |
string s = "abc";
s.push_back('a');//abca
cout<<s<<endl;
s.insert(2,"q");
cout<<s<<endl;//abqca
s.append("happy");
cout<<s<<endl;//abqcahappy
删除
代码 | 含义 |
---|---|
erase(iterator p) | 删除位置p的元素 |
erase(x,y) | 字符串从x开始删除y个字符 |
erase(iteratorx, iterator y) | 删除字符串中迭代器区间从x到y(不包含y)上所有字符 |
clear( ) | 清空字符串中所有元素 |
string s = "abcdefg";
string::iterator it=s.begin();
s.erase(it);
cout<<s<<endl;//bcdefg
s="bcdefg";
s.erase(it+3);
cout<<s<<endl;//bcdfg
s="bcdfg";
s.erase(2,1);
cout<<s<<endl;//bcfg
s="bcfg";
s.erase(it+1,it+2);
cout<<s<<endl;//bfg
s="bfg";
s.clear();
cout<<s<<endl;// (s为空,无输出)
替换
代码 | |
---|---|
s.replace(pos,n,str) | 把当前字符串从索引pos开始的n个字符替换为str |
s.replace(pos,n,n1,c) | 把当前字符串从索引pos开始的n个字符替换为n1个字符c |
s.replace(it1,it2,str) | 把当前字符串[it1,it2) 区间替换为str it1 ,it2为迭代器(区间为左闭右开,不包含it2位置的元素) |
string s = "abcdefg";
s.replace(1,2,"ov");
cout<<s<<endl;//aovdefg
s="aovdefg";
s.replace(1,2,"oqrs");
cout<<s<<endl;//aoqrsdefg
s="aoqrsdefg";
string::iterator it=s.begin();
s.replace(it+2,it+4,"u");
cout<<s<<endl;//aousdefg
截取
s.substr(POS,n)//从pos开始截取n个字符
string s="abcdefg",a;
a=s.substr(2,3);
cout<<a<<endl;//cde
查找
string s;
int a;
s="abcdefg";
a=s.find("bc",0);//从0开始查找子串"bc"(也可换成字符,当为字符时,
//单双引号均可),返回所找位置,如果找不到,则返回-1.
cout<<a<<endl;// 1
a=s.rfind("de",6);//rfind为反向查找,其他与find函数类似
cout<<a<<endl;// 3
s="abcbcfg";
a=s.find_first_of("fg",0);//查找第一个出现"fg"的位置
cout<<a<<endl;// 5
a= s.find_first_not_of("ab",2);//从位置2开始正向查找第一个不属于"ab"的字符
cout << a<< endl;//2
a=s.find_first_not_of("bc",1);//字符串中从位置2正向查找第
//一个不属于"bc"的字符的位置
cout<<a<<endl;//5
a=s.find_last_of("bc",6);//字符串中从位置6在倒着查找第
//一个属于"bc"的字符的位置
cout<<a<<endl;//4
a=s.find_last_not_of("fg",6);//字符串中从位置6在倒着查找第
//一个不属于"fg"的字符的位置
cout<<a<<endl;//4