//头文件
#include<string>
stirng和vector一样顺序存储可以使用数组的访问方式a[]
erase()方法
删除某一个或某一区间erase(pos,length)或[first,last)
insert()方法
insert(pos,string)
length()/size()方法
clear()方法
substr()方法
寻找某位置某一长度的字符串substr(pos,len);
find()方法
str.find(str2)当str2为str子串时返回第一次出现的位置(数组下标),如果没找到则返回string::npos(可能是-1或4294967295)
str.find(str2,pos),从str的pos号位置开始匹配str2
replace()方法
replace(pos,len,str2);
replace(it1,it2,str2);
转换大小写
//transform()函数所在头文件
#include<algorithm>
transform(字符串头地址,字符串尾地址,字符串开始转化位置,转化类型)
transform(s.begin(),s.end(),s.begin(),::tolower);//转化为小写
transform(s.begin(),s.end(),s.begin(),::toupper);//转化为大写
//等价表达
transform(s.begin(),s.end(),&s[0],::tolower);
transform(s.begin(),s.end(),&s[0],::toupper);
从string中提取单词并记录单词个数
#include<iostream>
#include<sstream>
#include<string>
#include<vector>
using namespace std;
int main(){
string s;
vector<string> ve;
getline(cin, s);
stringstream sos(s);//sos为自定义变量
while(sos >> s){
ve.push_back(s);//用vector数组存储,因为不知道单词实际个数
}
vector<string>::iterator it;
cout<<ve.size()<<endl;//单词个数
for(it=ve.begin();it!=ve.end();it++)
cout<<(*it)<<endl;
return 0;
}
将字符串转化为数字和将数字转化为字符串
#include<iostream>
#include<string>
using namespace std;
int main(){
int i=123;
double d=1.23;
long long ll=123;
char s[100];//缺点只能用数组存储不能使用string
sprintf(s,"%d",i);
cout<<s<<endl;
sprintf(s,"%.2f",d);
cout<<s<<endl;
sprintf(s,"%ld",ll);
cout<<s<<endl;
return 0;
}
#include<iostream>
#include<sstream>
#include<string>
using namespace std;
int main(){
int i=123;
double d=1.23;
long long ll=456;
string s;
stringstream ss;//也可用于数字转字符串
ss<<i;
ss>>s;
ss.clear();//输出s后如果未使用clear函数则ss值不能再输入
cout<<s<<endl;
ss<<d;
ss>>s;
ss.clear();
cout<<s<<endl;
ss<<ll;
ss>>s;
cout<<s<<endl;
return 0;
}
使用见解
string::nops现在值为18446744073709551615
因为如此long long 和int型变量都存不下然后变为-1;
从而达到判断是否查找的效果(因为数组下标不可能是-1)