string的用法

关于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;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值