String 基本字元容器系列
阿新 • • 發佈:2019-01-29
- 標頭檔案:#include<string>
- 建立string物件
#include<string>
#include <iostream>
using namespace std;
int main(int argc,char*argv[]) {
//建立長度為零的字串
string s;
cout<<s.length()<<endl;
return 0;
}
- 給string物件賦值
#include<string> #include <iostream> #include<algorithm> #include<cstdio> #include <cctype> using namespace std; int main(int argc,char*argv[]) { string s; //直接給字串賦值 s="hello world!"; cout<<s<<endl; //把字元指標賦值給一個字串物件 string string; char a[45]; //scanf的輸入速度比cin快得多 //scanf是c語言的函式,不支援string物件 scanf("%s",&a); //把整個字串陣列賦值給string物件 string=a; cout<<string<<endl; return 0; }
- 從string物件尾部新增字元
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s=s+'a';
s=s+'n';
s=s+'d';
cout<<s<<endl;
return 0;
}
- 從string物件尾部追加字串
#include<string> #include <iostream> #include<algorithm> #include<cstdio> #include <cctype> using namespace std; int main(int argc,char*argv[]) { string s; //直接用+操作符 s=s+"and"; s=s+"AND"; s=s+"123"; cout<<s<<endl; //採用append()方法 string ss; ss.append("and"); ss.append("AND"); ss.append("123"); cout<<ss<<endl; return 0; }
- 給string物件插入字元
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefg";
//定義迭代器
string::iterator it;
//迭代器位置為串首
it=s.begin();
//插入'x'到第二個位置
s.insert(it+2,'x');
cout<<s<<endl;
return 0;
}
- 訪問string物件元素
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefg";
//輸出首元素
cout<<s[0]<<endl;
//相同相減為零
cout<<s[0]-'a'<<endl;
return 0;
}
- 刪除string物件的元素
- 清空一個字串,直接給它賦空字串即可
- 使用erase()方法
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefgh12345";
//定義迭代器
string::iterator it;
it=s.begin();
//刪除第三個元素
s.erase(it+3);
cout<<s<<endl;
//刪除區間0-4的所有元素
s.erase(it,it+4);
cout<<s<<endl;
//清空字串
s="";
cout<<s.length()<<endl;
return 0;
}
- 返回string物件的長度
- 採用length()方法可以返回字串長度
- 採用empty()方法可以返回字串是否為空
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefgh12345";
//輸出字串長度
cout<<s.length()<<endl;
//清空字串
s="";
//判斷是否為空
cout<<s.empty()<<endl;
return 0;
}
- 替換string物件的字元
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefgh12345";
//從第八個開始,連續5個字元替換為" good";
s.replace(8,5," good");
cout<<s<<endl;
return 0;
}
- 搜尋string物件的元素或子串
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefgh12345";
//查詢第一個字元'c',返回下標值
cout<<s.find('c')<<endl;
//查詢第一個子串"c",返回下標值
cout<<s.find("c")<<endl;
//查詢第一個字元"123",返回下標值
cout<<s.find("123")<<endl;
//查詢第一個字元"132",查不到返回18446744073709551615
cout<<s.find("132")<<endl;
return 0;
}
- string物件的比較
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefgh12345";
//s小,返回負數
cout<<s.compare("cdde")<<endl;
//s大,返回正數
cout<<s.compare("aad")<<endl;
//一樣大,返回零
cout<<s.compare("abcdefgh12345")<<endl;
return 0;
}
- 用reverse反向排序string物件
- reverse()方法標頭檔案:#include<algorithm>
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="abcdefgh12345";
reverse(s.begin(),s.end());
cout<<s<<endl;
return 0;
}
- string物件作為vector元素
#include<string>
#include<vector>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
vector<string>v;
v.push_back("Nike");
v.push_back("Senma");
v.push_back("Jaodan");
cout<<v[0]<<endl;
cout<<v[1]<<endl;
cout<<v[2]<<endl;
cout<<v[0][0]<<endl;
cout<<v[1][0]<<endl;
cout<<v[2].length()<<endl;
return 0;
}
- string型別的數字化處理
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
s="13243512345";
int sum=0;
for(int i=0;i<s.length();i++){
if(s[i]=='0')sum+=0;
else if(s[i]=='1')sum+=1;
else if(s[i]=='2')sum+=2;
else if(s[i]=='3')sum+=3;
else if(s[i]=='4')sum+=4;
else if(s[i]=='5')sum+=5;
else if(s[i]=='6')sum+=6;
else if(s[i]=='7')sum+=7;
else if(s[i]=='8')sum+=8;
else if(s[i]=='9')sum+=9;
}
cout<<sum<<endl;
return 0;
}
- string物件與字元陣列互操作
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s;
char ss[1000];
//輸入字元到字元陣列
scanf("%s",&ss);
s=ss;
//用printf輸出字串物件,要採用c_str()方法
printf(s.c_str());
cout<<endl;
printf("%s",ss);
cout<<endl;
cout<<s<<endl;
cout<<ss<<endl;
return 0;
}
- string物件與sscanf函式
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
string s1,s2,s3;
char sa[1000],sb[1000],sc[1000];
//將字串分離成子串
sscanf("abc 123 ABC","%s %s %s",sa,sb,sc);
s1=sa;
s2=sb;
s3=sc;
cout<<s1<<" "<<s2<<" "<<s3<<endl;
int a,b,c;
//將字串分離成數字跟scanf一樣
sscanf("12 34 56","%d %d %d",&a,&b,&c);
cout<<a<<" "<<b<<" "<<c<<endl;
int x,y,z;
sscanf("21,43$65","%d,%d$%d",&x,&y,&z);
cout<<x<<" "<<y<<" "<<z<<endl;
return 0;
}
- string物件與數值相互轉換
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
#include<sstream>
using namespace std;
//將數值轉換為字串 C++方法
string convertToString(double x)
{
ostringstream o;
if(o<<x)
return o.str();
return "conversion error";
}
//將字串轉換為數值 C++方法
double convertFromString(const string &s)
{
istringstream i(s);
double x;
if(i>>x)
return x;
return 0.0;
}
int main(int argc,char*argv[])
{
//將數值轉換為string的第一種方法:c方法
char b[10];
string a;
sprintf(b,"%d",1975);
a=b;
cout<<a<<endl;
//將數值轉換為string的第一種方法:c++方法
string cc=convertToString(1976);
cout<<cc<<endl;
string dd="4324";
//將字串轉換為數值的方法:C++方法
int p=convertFromString(dd)+2;
cout<<p<<endl;
return 0;
}