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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章