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