1、string类型的初始化:
string s1;//s1为空串
string s2("abc");//用字面值abc初始化s2
string s3(s2);//将s3初始化为s2的一个副本
string s4(n,‘c’);//将s4初始化为含有n个c的字符串
2、string类型的常用操作:
(1)s.empty() //若s为空串,则返回true,否则返回false(if(s.empty==0){..........})
(2)s.size() //获取字符串s中的字符个数
(3)s[n] //返回s中位置为n的字符,位置从0开始,类似于数组
(4)s1+s2 //将s1和s2连接成一个新串
(5)s1=s2 //将s1的内容替换为s2的副本
(6)s1==s2 //判定相等,相等返回true,否则返回false
(7)s1!=s2 //判定不相等,不等返回true,否则返回false
(8)当需要输入含有空格的字符串时,可用getline函数,用法如下:
string a; getline(cin,a);
注意:1.字符串用“+”连接时,被连接的部分必须有string变量存在,即string s="HELLO"+"WORLD";是错误的写法。
3、补充一:
string的特性描述:
int capacity()const; //返回当前容量(即string中不必增加内存即可存放的元素个数)
int max_size()const; //返回string对象中可存放的最大字符串的长度
int size()const; //返回当前字符串的大小
int length()const; //返回当前字符串的长度
bool empty()const; //当前字符串是否为空
void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分
string的赋值:
string &operator=(const string &s);//把字符串s赋给当前字符串
string的连接:
string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾
string &append(const char *s); //把c类型字符串s连接到当前字符串结尾
string的比较:
bool operator==(const string &s1,const string &s2)const;//比较两个字符串是否相等
运算符">","<",">=","<=","!="均被重载用于字符串的比较;
int compare(const string &s) const;//比较当前字符串和s的大小
string的子串:
string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串
string substr(int pos);//返回pos开始的字符组成的字符串
string的交换:
void swap(string &s2); //交换当前字符串与s2的值
string类的查找函数:
//查找成功时返回所在位置,失败返回string::npos的值,判断string::size_type pos==str.npos是否成立
int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
字符串流处理:
在进行多次转换的时候,必须调用stringstream的成员函数clear().
ss. bool eof() :字符串流为空时返回 true
ss. clear() :清空字符串流
用途一:切割串信息,用到前面的eof,当然是切割到字符串流空就结束
//切割流
stringstream ss;
ss.clear(); //清空流
string Str;
getline(cin, Str);
ss << Str;
while (!ss.eof())
{
string Tempstr;
ss >> Tempstr;
cout << Tempstr << endl;
}
ss.clear(); //清空流
用途二:转换成任意类型,切割流并不是字符串单一流向,还可以转换成浮点型,整型等等
//类型互换
string Fix_Data = "1998.9 + 26 = MyHeart";
stringstream _ss(Fix_Data);
double Birth;
_ss >> Birth;
cout << "Birth: "<> Signal;
cout << "Signal: " << Signal<> Day;
cout << "Day: " << Day << endl;
_ss >> Signal;
cout << "Signal: " << Signal << endl;
char Sad[10];
_ss >> Sad;
cout << "Sad: " << Sad << endl;
#include
#include
#include
using namespace std;
//只能处理如 12/45/48 12/45/48/类数据分割
int main(){
int n;
cin>>n;
while(n--){
vectorres;
string str;
cin>>str;
string::size_type pos,start=0;
string pattern="/";
pos=str.find(pattern,0);
while(pos!=str.npos){//依次查找
if(start!=pos){
res.push_back(str.substr(start,pos-start));
start=pos+1;
pos=str.find(pattern,start);
}
}
if(!str.substr(start).empty()){//末端
res.push_back(str.substr(start));
}
for(int i=0;i
//可以使用 STL 的接口
string str13;
str13="GFBACED";
string::iterator itstr=str13.begin();
for( ;itstr!=str13.end();itstr++){//遍历
cout<<*itstr;
}
cout<