string常见用法和字符串处理方法

//头文件
#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)

发布了93 篇原创文章 · 获赞 16 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43813373/article/details/102964377
今日推荐