c++的字符串string基本操作大全
string的概念
string是c++專門創(chuàng)建的字符串類型,為了方便操作字符串。
string中很多的方法。
string的基本操作
首先要包含頭文件string.
創(chuàng)建
有初始化的創(chuàng)建,它的末尾不以'\0'為結(jié)尾。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="hello world";
//string a("hello world");
cout<<a;
return 0;
}
string可以直接賦值
#include <iostream>
#include<string>
using namespace std;
int main() {
string a;
string b("hello world");
a=b;
cout<<a;
return 0;
}
輸入
cin輸入,不能輸入空格
#include <iostream>
#include<string>
using namespace std;
int main() {
string a;
cin>>a;
cout<<a;
return 0;
}getline是c++標準函數(shù),讀取一行文本存儲為字符。
istream&getline(istream& is,string&str);遇到'\n'停止。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a;
getline(cin,a);
cout<<a;
return 0;
}
istream&getline(istream& is,string&str,char delim);直到遇到delim字符停止
#include <iostream>
#include<string>
using namespace std;
int main() {
string a;
getline(cin,a,'m');//讀到m停止
cout<<a;
return 0;
}
獲取長度
size(),string有很多函數(shù),用 . 使用
#include <iostream>
#include<string>
using namespace std;
int main() {
string b;
string a="abcd";
string c="abcdefg";
string d="j k l l l";
cout<<a.size()<<endl;
cout<<b.size()<<endl;
cout<<c.size()<<endl;
cout<<d.size()<<endl;
return 0;
}
string的數(shù)據(jù)也有下標和正常創(chuàng)建的字符數(shù)組一樣從0開始。
迭代器
用來遍歷容器元素。
iterator類似指針,數(shù)組下標。
需要*解引用。
begin()和end()
begin()指向第一個位置,end()指向最后的下一個位置,不存在于字符串。
可以比較大小,加減。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="hello world";
string::iterator it1=a.begin();
string::iterator it2=a.end();
if(it1<it2)
cout<<"<"<<endl;
else
cout<<">"<<endl;
return 0;
}
可以通過*解引用,輸出存儲的字符。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="hello world";
string::iterator it1=a.begin();
string::iterator it2=a.end();
cout<<*it1<<endl;//[0]
it1++;
cout<<*it1<<endl;//[1]
it1--;
cout<<*it1<<endl;//[0]
return 0;
}
使用迭代器遍歷。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="abcdef";
string::iterator it1=a.begin();
string::iterator it2=a.end();
for (string::iterator i = a.begin(); i != a.end(); ++i) {
cout << *i;
}
cout<<endl;
for(auto i=it2-1;i>=it1;--i){
cout<<*i;
}
return 0;
}
還有反向迭代器,reverse_iterator 類型的rbegin(),rend()剛好相反。

尾插函數(shù)
a.push_back();在字符串尾部插入字符
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="abcdef";
cout<<a<<endl;
a.push_back('g');
cout<<a<<endl;
return 0;
}

+=和+運算

也可以頭部拼接。

尾刪pop_back()

空的情況下刪除會報錯。
insert()插入
a.insert(pos , str),在a字符串中的pos位置前插入,str字符串。str可以是string類型的內(nèi)容,可以是字符串如下圖。
a.insert(pos,n,str)插入n個str的字符到pos前。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="abcdef";
cout<<a<<endl;
a.insert(3,"6");
cout<<a<<endl;
return 0;
}
find查找
a.find()返回第一次出現(xiàn)的位置。它的返回值是size_t,相當于下標
a.find(str,位置(默認0))
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="abcdef abc def l g k";
string b="de";
string c="l";
size_t t=a.find(b);
cout<<t<<endl;
cout<<a.find(b,t+1)<<endl;
return 0;
}
a.find(char*,size_t pos);
可以查找c風格的字符串。
a.find(str,size_t pos ,n)a字符串中查找str前n給字符

也可以找字符。str
找不到會放回-1;無符號整型的-1。2^32-1;
substr()
a.substr(pos,len=npos);pos截取的開始,npos截取的長度。pos默認為0,npos默認到字符串末尾
的長度。
用于截取a字符串pos位置開始n個的字符。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="abcdefghi";
string b=a.substr(3,3);
string c=a.substr(3);
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
關(guān)系運算
==,至少有一個str的字符才可以比較,比較的ascii值對應(yīng)位置。
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="abcdefghi";
string b="abcdefghi";
if(a==b)
cout<<"=="<<endl;
string c="abcdefgh";
if(a!=c)
cout<<"!="<<endl;
string d="b";
if(a<d)
cout<<"<"<<endl;
string e="aa";
if(a>e)
cout<<">"<<endl;
return 0;
}
字符串和int 值的轉(zhuǎn)換。
stoi/stol,stol是int ,stol是long int。
int stoi(str,size_t* idx=0,int base=0)
long stol(str,size_t* idx=0,int base=0)
str是string類型的字符串。
idx是一個指針,從idx位置開始到第一個無法匹配的下標返回
如“123q”返回q的位置
base表示被解析的數(shù)字的進制,
2表示被解析的數(shù)字當作2進制數(shù)字,轉(zhuǎn)化為10進制。
0是自動推到如0x是16,0是8;
#include <iostream>
#include<string>
using namespace std;
int main() {
string a="123p";
size_t t=0;
int b=stoi(a,&t,10);
int c=stoi(a,&t,8);
cout<<b<<endl;
cout<<c<<endl;
return 0;
}
stod轉(zhuǎn)化為double,stof轉(zhuǎn)化為float
stod(str,size_t* idx);只有10進制。
stof(str,size_t* idx);

to_string
把數(shù)字轉(zhuǎn)換為字符串。

反轉(zhuǎn)字符串
reverse要包含頭文件algorithm.
reverse(首元素的地址,反轉(zhuǎn)范圍末尾的下一個元素)。
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
string str;
cin>>str;
reverse(str.begin(),str.end());
cout<<str;
return 0;
}
到此這篇關(guān)于c++的字符串string基本操作大全的文章就介紹到這了,更多相關(guān)c++字符串string內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

