字符指针赋值:
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
string s;
char ss[5000];
scanf("%s",ss);//scanf是c语言输入,输入速度比cin快
s=ss;
cout<<s<<endl;
return 0;
}
string对象的尾部添加一个字符(char),采用“+”即可(单字符''多字符字符串“”)
添加也可用append例如:
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
string s;
s=s+'a';
s=s+"abc";
s.append("123");
cout<<s<<endl;
return 0;
}
给string对象插入字符
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
string s;
s="abc123";
string::iterator it;//定义迭代器
it=s.begin();//迭代器位置选择字符串开头
s.insert(it+2,'p');//将‘p’插入第2个字符前(字符位置从0开始)
cout<<s<<endl;
return 0;
}
访问string对象的元素:
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
string s;
s="bbc123";
cout<<s[0]<<endl;//输出string对象的首元素
cout<<s[0]-'a'<<endl;//输出类型是数字
return 0;
}
删除string对象元素
(1)清空一个字符串,直接给它赋值为空字符串
(2)使用erase()方法删除迭代器所指的那个元素或一个区间的所有元素
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
string s;
s="bbc123456";
string::iterator it=s.begin();
s.erase(it+3);//删除第3个元素,元素位置从0开始
cout<<s<<endl;
s.erase(it+1,it+4);//删除1~4区间所有元素
cout<<s<<endl;
s="";
cout<<s.length()<<endl;//输出字符串长度
}
返回string对象长度
采用empty()方法,字符串为空,返回逻辑真1,否则为0
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
string s;
s="bbc123456";
cout<<s.empty()<<endl;//字符串不为空,返回0
s="";
cout<<s.empty()<<endl;//字符串为空,返回1
}
替换string对象字符
使用replace()的进行替换
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
string s;
s="bbc123456";
s.replace(3,3,"good");//从第三个开始,将连续的三个字符替换为“good”
cout<<s<<endl;
return 0;
}
搜索string对象的元素或子串
采用find()方法,查到返回下标值(从0开始);查不到,返回4294967295
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
string s;
s="bbc123456";
s.replace(3,3,"good");//从第三个开始,将连续的三个字符替换为“good”
cout<<s<<endl;
return 0;
}
string对象比较
采用compare();它比对方大(如果比较的字符串和被比较字符串前面都一样,返回被比较字符串的多的字符的个数),返回1;比对方小,返回-1;相同,返回0;
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
string s;
s="cat dog cat";
cout<<s.compare("cam")<<endl;
cout<<s.compare("cat")<<endl;
cout<<s.compare("cat dog cat")<<endl;
cout<<s.compare("dog")<<endl;
return 0;
}
用reverse反向排序
采用reverse()方法将string对象迭代器所指向的一段区间中的元素反向排序(需要头文件)。
#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
string s;
s="cat dog cat";
reverse(s.begin(),s.end());//从首字符到最后一位字符反序
cout<<s<<endl;
return 0;
}
string对象作为vector元素(类似于字符串数组)
#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
vector<string> s;
s.push_back("Jack");
s.push_back("Tom");
s.push_back("Mike");
cout<<s[0]<<endl;
cout<<s[1]<<endl;
cout<<s[2]<<endl;
cout<<s[0][0]<<endl;
cout<<s[1][0]<<endl;
cout<<s[2].length()<<endl;//计算长度
return 0;
}
string类型的数字化处理
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc, char* argv[])
{
string s;
s="1234059";
int i,sum=0;
for(i=0;i<s.length();i++)
{
if(s[i]=='0')sum=sum+0;
else if(s[i]=='1')sum=sum+1;
else if(s[i]=='2')sum=sum+2;
else if(s[i]=='3')sum=sum+3;
else if(s[i]=='4')sum=sum+4;
else if(s[i]=='5')sum=sum+5;
else if(s[i]=='6')sum=sum+6;
else if(s[i]=='7')sum=sum+7;
else if(s[i]=='8')sum=sum+8;
else if(s[i]=='9')sum=sum+9;
}
cout<<sum<<endl;
return 0;
}