string基本用法
1、字符串定义,长度,遍历
需要加头文件
#include<string>
.....
int main()
{
.....
string s,t;//定义字符串s和t
cin>>s;//输入的字符串没有空格
getline(cin,s);//输入的字符串有空格
int len = s.length();//s.size();都是求字符串长度
//遍历方式一:数组一样遍历
for(int i = 0;i <len;i ++)
{
cout << s[i]<<" ";//最简单的遍历,像数组一样
......
}
//C++11的auto遍历
for(auto i : s)
cout<< i <<" ";
//迭代器遍历,算了吧,太麻烦
substr、find、reverse综合使用,太实用了
1、substr(string, start,< length >):
从string的start位置开始提取字符串 ,length:要提取字符串的长度。
若length为以下任意条件之一时,返回start位置到串尾的所有字符:
length不指定
length为空
length为负数
length大于start到串尾的长度
例如:
data test;
str='chsh234960b3';
strl=subatr(str,5);
str2=substr(str,5,'');
str3=aubstr(str,5,-3);//当length为负数时,默认从start位罝取所有字符。
str4=aubstr(str,5, 30);
substr中的start为负数时返回空值;
2、substr实现从右侧取数几种方法:
从字符串chah234960b3右侧截取5个字符的几种方法
(1).substr(str,length(str)-n+1,n)
str='chah234960b3';
str1=substr(str,length(str)-5+1,5);
输出为:4960b
(2).使用reverse函数
str='chah234960b3';
str1=reverse(substr(reverse(str),1,5));
reverse(str.begin(),str.end());//实现str字符串的完全翻转
输出为:4960b
3、substr除了有字段截取的功能外,还可以用来替换字段
'='在左边: 截取字段
x='123456';
str=substr(x,1,3);
在log中输出结果为: str=123;
'='在右边: 替换字段
x='123456';
substr(x,1,3)='789';
在log中输出结果为: str=789456;
4、substr往往结合find一起使用.
#include<bits/stdc++.h>
using namespace std;
int main() {
string a="12-456-789-3";
int pos=0,index=0,start=0;
//将a分割后的子字符串存到这个answer[]字符串数组中
string answer[150];
while(1)
{
//find()查找从指定位置start开始的第一次出现的目标字符串
pos=a.find('-',start);
cout<<"pos="<<pos<<endl;
if(pos!=-1)
{
//substr()返回一个从指定位置开始,截取指定的长度的字符串
//start表示所需的子字符串的起始位置。字符串中第一个字符的索引为0。
answer[index++]=a.substr(start,pos-start);
cout<<answer[index-1]<<endl;
start=pos+1;
}else break;
}
answer[index++]=a.substr(start);
cout<<answer[index-1]<<endl;
return 0;
}