关于string的用法我也是借鉴了别人的,然后在例子后面做了比较详细的解释,string果然很强大
1.string字符串
#include <iostream>
#include<string>
using namespace std;
int main()
{
string str1 ="wake me up when the September ends";
string str2 ("my heart will go on");
string str3 (str1,5,2); //从0数第5个字母开始的连续两个字母 me
string str4 (str2,3,5); //从0数第3个字母开始的连续五个字母 heart
char ch_music[]={"Good-boy"};
string str5=ch_music; //Good-boy
string str6 (ch_music); //Good-boy
string str7 (ch_music,4); //Good
string str8 (10,'i'); //十个i
string str9 (ch_music+3,ch_music+6); //d-b
cout<<str3<<endl<<str4<<endl<<str5<<endl<<str6<<endl<<str7<<endl<<str8<<endl<<str9<<endl;
getchar();
return 0;
}
2 拼接字符串,赋值
#include <iostream>
#include<string>
using namespace std;
int main()
{
string str1 ="wake me up ";
string str2 ="when the September ends";
string str =str1+str2;
str1+=str2;
str.assign("see you again"); //重新赋值
str.append("Good time"); //append函数是向string 的后面追加字符或字符串
str.insert(13,"!!!");//在指定位置插入字符
cout<<str1<<endl<<str<<endl;
getchar();
return 0;
}
3 访问操作符 string可以按数组的方式,以下标来访问还可以用at()函数访问指定的字符
#include <iostream>
#include<string>
using namespace std;
int main()
{
string str1 ="Good time";
cout<<str1[3]; //从零开始数第四个字母 d
cout<<str1.at(3); //从零开始数第四个字母 d 两行的效果一样
string buff;
getline(cin,buff); //输入一行字符,赋值给buff
getline(cin,buff,'!'); //输入一行字符,赋值给buff,以 ! 结束,结束符可以自己定义
cout<<buff<<endl;
getchar();
return 0;
}
4 可以把string理解为一个特殊的容器,容器中装的是字符
#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str;
cin>>str;
string::iterator itstr=str.begin(); //定义一个容器名 输入的字符第一个字母赋值给str.begin()
for(;itstr!=str.end();itstr++) //str.end()="/0"
{
cout<<*itstr; //输出字符
}
sort(str.begin(),str.end()); //排序 要头文件 algorithm
cout<<str<<endl;
return 0;
}
5 string的比较操作,按字符在字典中的顺序进行逐一比较
#include <iostream>
#include<string>
using namespace std;
int main()
{
string str1="good";
if(str1<"hello")
{
cout<<"good小于hello"<<endl;
}
string str2="anhui";
string str3="hunan";
string str4="nanjing";
if(str2<=str3 || str2==str4)
{
cout<<"安徽-南京-湖南"<<endl;
}
cout<<str2.compare("anhui")<<endl; //相等返回 0 ,大于返回正数,小于返回负数
cout<<str2.compare(str3)<<endl;//相等返回 0 ,大于返回正数,小于返回负数
cout<<str3.compare(2,2,str4,2,2)<<endl;//相等返回 0 ,大于返回正数,小于返回负数 str3中的na与str4中的nj比较
cout<<str4.compare(3,4,"aaaa",4)<<endl;//相等返回 0 ,大于返回正数,小于返回负数 jing与aaaa比较
return 0;
}
6 查找 find rfind string中除了find、rfind,还有find_first_of等函数
#include <iostream>
#include<string>
using namespace std;
int main()
{
string str1="wake me up when the September ends";
string::size_type position;
position=str1.find("when"); //find函数返回 when 在str1中第一次出现的下标位置
if(position!=str1.npos) //如果没有找到,返回npos,这个值很大4294967295
{
cout<<"第一次出现的下标是"<<position<<endl;
}
position=str1.find("me",6); //从字符串str1下标 6开始,查找字符串 you ,返回you在str1中的下标
//如果找不到则显示出npos
cout<<"str1.find(me,6)is:"<<position<<endl;
string substr="m";
position=0;
int i=1;
while((position=str1.find_first_of(substr,position))!=string::npos)
{
cout<<"position"<<i++<<" : "<<position<<endl; //查找str1中substr中m出现的所有位置
position++;
}
string flag="w";
position=str1.rfind(flag); //反向查找,flag在str1中最后出现的位置
cout<<"str1.rfind(flag):"<<position<<endl;
return 0;
}