首先,包含头文件string
#include string
1.定义和构造初始化
声明字符串变量
string s;
2.字符串操作函数
1、添加字符+
s+=str;//加个字符串s+=”my name is jiayp”;//加个C字符串
s+=’a’;//加个字符
2、插入字符
在string中间的某个位置插入字符串,可以用insert()函数,指定一个安插位置的索引,被插入的字符串将放在这个索引的后面。
s.insert(0,”my name”);
s.insert(1,str);
插入必须写成字符串形式。
3、删除
s.erase(13);//从索引13开始往后全删除
s.erase(7,5);//从索引7开始往后删5个
4、比较字符串 == != <= >= compare()
扫描二维码关注公众号,回复:
1114868 查看本文章
字符串比较按照字典顺序,字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。
另一个功能强大的比较函数是成员函数compare(),0-相等 >0-大于 <0-小于。举例如下:string s(“abcd”);
s.compare(“abcd”); //返回0
s.compare(“dcba”); //返回一个小于0的值
s.compare(“ab”); //返回大于0的值
s.compare(s); //相等
s.compare(0,2,s,2,2); //用”ab”和”cd”进行比较小于零
s.compare(1,2,”bcx”,2); //用”bc”和”bc”比较。
5、字符串大小size()、length()
6、取某个字符[]、at()
可以使用下标操作符[]和函数at()对元素包含的字符进行访问。 string str1 = "Iphone 5";
cout<<str1[2]<<endl; // = h
cout<<str1.at(4)<<endl; // = n
string stuff;
getline(cin,stuff); // 输入一行字符赋值给stuff
getline(cin,stuff,'!'); // 输入一行字符以“!”结束
cout<<stuff<<endl;
7、子字符串substr()
substr(),形式如下:s.substr();//返回s的全部内容
s.substr(11);//从索引11往后的子串
s.substr(5,6);//从索引5开始6个字符
8、查找函数
find()rfind()
这些函数返回符合搜索条件的字符区间内的第一个字符的索引,没找到目标就返回npos。所有的函数的参数说明如下:
第一个参数是被搜寻的对象。第二个参数(可有可无)指出string内的搜寻起点索引,第三个参数(可有可无)指出搜寻的字符个数。
# include <iostream>
# include <string>
using namespace std;
int main()
{
string str = "when i was young, i listen to radio.";
position = str.find("listen");
if (position != str.npos) //npos是个很大的数,如果没找到就会返回npos的值给position
{
cout<<"第一次出现的下标是:"<<position<<endl;
}
//从字符串下标9开始,查找字符串you,返回you 在str中的下标
position = str.find("you",9);
cout<<"str.find("you",9")is:"<<position<<endl;
//查找子串出现的所有位置
string substr = "i";
position = 0;
int i = 1;
while((position = str.find_first_of(substr,position)) != string::npos)
{
cout<<"position "<<i++<<position<<endl;
position++;
}
//反向查找子串在str中最后出现的位置
string flag = "to";
position = str.rfind(flag);
cout<<"str.rfind(flag):"<<position<<endl;
getchar();
return 0;
}
9、迭代器begin()、end()
# include <iostream>
# include <string>
# include <algorithm>
using namespace std;
int main()
{
string str;
str.push_back('Q');
str.push_back('A');
sort(str.begin(),str.end());
string::iterator itstr = str.begin();
for ( ; itstr != str.end(); itstr++)
{
cout<<*itstr;
}
//str.pop_back();
getchar();
return 0; //输出AQ
}
- 10、分割字符串
#include <stdio.h> #include <string> #include <iostream> using namespace std; void test1(){//strtok char s[] = "Golden Global View,disk * desk"; const char *d = " ,*"; char *p; p = strtok(s,d); while(p) { printf("%s\n",p); p=strtok(NULL,d); } } void test2(){//find和substr string s="Golden Global View disk desk"; int position=0,position1=0; string tmp; if(s[s.size()-1]!=' ')s+=" "; while(s!=""){ position=s.find(" "); tmp=s.substr(0,position); cout<<tmp<<endl; s=s.substr(position+1,s.size()-position); } } int main() { test1(); cout<<endl; test2(); return 0; }