/*C++常用字符串操作汇集*/
string str1("ttt"); //创建并初始化
string str2 = "txhe"; //另一种方式
char str3[] = "abcdefg"; //以定义字符数组的方式创建
cout<<str1<<"----"<<str2<<"----"<<str3<<endl;
/*直接字符串初始化*/
string str4(str3);
cout<<str4<<endl;
/*指定从str3的下标3位置开始,往后读取4个字节*/
string str5(str3,3,4);
cout<<str5<<endl;//defg
/*将前三个字符作为初值构造*/
string str6(str3,3);
cout<<str6<<endl;//abc
/*分配10个字符,初值都是'k'*/
string str7(10,'k');
cout<<str7<<endl;
str7.assign("abc");
cout<<str7<<endl;
/*重新分配指定字符串的前3元素*/
str7.assign("AABBCC",3);
cout<<str7<<endl;
/*Swap交换方法*/
string str8 = "AAA";
string str9 = "BBB";
cout<<str8<<"is str8"<<endl;
cout<<str9<<"is str9"<<endl;
str8.swap(str9);
cout<<str8<<"is str8"<<endl;
cout<<str9<<"is str9"<<endl;
string str10 = "AAAA";
str10 += "BBBB";
cout<<str10<<endl;
/*方法可以添加字符串*/
str10.append("CCCC");
cout<<str10<<endl;
/*方法只能添加一个字符*/
str10.push_back('D');
cout<<str10<<endl;
/*头部插入*/
str10.insert(0,"ZZZ");
cout<<str10<<endl;
/*尾部插入*/
str10.insert(str10.size(),"FFFF");
cout<<str10<<endl;
/*中间插入*/
str10.insert(str10.size()/2,"PPP");
cout<<str10<<endl;
string str11 = "ABCDEFGH";
/*从索引1到索引3 即删掉BCD*/
str11.erase(1,3);
cout<<str11<<endl;
/*即将指定范围内的字符串替换成"",即变相删除FG*/
str11.replace(2,2,"");
cout<<str11<<endl;
string str12 = "ABCDEFGH";
cout<<str12.length()<<endl;
string str13 = "ABCDEFGH";
/*从索引2开始3个字节的字符全替换成"!!!!!"*/
str13.replace(2,3,"!!!!!");
cout<<str13<<endl;
string str14 = "ABCDEFG";
/*返回字符的可能最大个数,即当前C++字符最多能包含的字符数*/
cout<<str14.max_size()<<endl;
string str15;
/*判断字符串是否为空*/
if(str15.empty())
{
cout<<"str15为空"<<endl;
}
else
{
cout<<"str15不为空"<<endl;
}
str15 += "aaa";
if(str15.empty())
{
cout<<"str15为空"<<endl;
}
else
{
cout<<"str15不为空"<<endl;
}
/*存取单一字符*/
for(int i=0;i<str15.length();i++)
{
cout<<str15[i]<<endl;
}
for(int i=0;i<str15.size();i++)
{
cout<<str15.at(i)<<endl;
}
string str16 = "ABCDEF1234";
const char* str17 = str16.c_str();//转化为C串,字符指针
const char* str18 = str16.data();
for(int i=0;i<str16.size();i++)
{
cout<<"C_Str():"<<str17[i]<<endl;
cout<<"data():"<<str18[i]<<endl;
}
string str19 = "ABCDEFG";
/*返回某个子字符串*/
/*从索引5开始2个字节*/
string str20 = str19.substr(5,2);
cout<<str20<<endl; //FG
char args = 'C';
int index = str19.find(args,1); //找到则返回当前索引(不管从什么位置开始查),找不到则返回-1
cout<<index<<endl;
int index1 = str19.rfind(args,2);//输出最后一次的出现的位置
cout<<index1<<endl;
int index2 = str19.find_first_not_of(args,1);//从1开始查找第一个不属于args的字符的位置
cout<<index2<<endl;
int index3 = str19.find_last_not_of(args,1);//从1开始查找最后一个不属于args的字符
cout<<index3<<endl;
string str21= "ABCDEFGH123";
string pattern = "GH";
string::size_type pos;
/*从索引0开始,查找符合字符串"GH"的头索引*/
pos = str21.find(pattern,0);
cout<<pos<<endl;
string str22 = str21.substr(pos,pattern.size());
cout<<str22<<endl;
/*提供类似STL的迭代器支持*/
string str23 = "ABCDEFGH123";
for(string::iterator iter = str23.begin();iter!=str23.end();iter++)
{
cout<<*iter<<endl;
}
cout<<str23.capacity()<<endl;//重新分配内存之前,str23所能包含的最大字符数,因为有的时候内存并不是连续的,数量增长后需重新分配。
[C++]常用字符串操作整理
最新推荐文章于 2023-02-18 19:43:37 发布