字符串变量String的常用操作

来源:互联网 发布:美国移交域名管理 编辑:程序博客网 时间:2024/06/05 05:37
#include<iostream>#include<vector>#include<string>using namespace std;int main(){string str1("helloxihuhellozhejianghello");string numbers("0123456789");string name("r2d3");//string搜索函数返回的是string::size_type值,是一个无符号类型的,用一个int型的或其他带符号类型来保存不是一个好方法//find函数中有两个形参find(c,pos),第二个默认的为0,即从第0个字符开始查找字符cauto pos1=str1.find("hello");//查找str1中"hello"第一次出现的位置auto pos2=str1.rfind("hello");//查找str1中"hello"最后一次出现的位置auto pos3=name.find_first_of(numbers);//在name中查找numbers中任意一个字符第一次出现的位置,即第一个数字的下标auto pos4=name.find_first_not_of(numbers);//在name中查找第一个不在numbers中的字符,即第一个不为数字的下标auto pos5=name.find_last_of(numbers);//name中最后一个数字的下标auto pos6=name.find_last_not_of(numbers);//name中最后一个字符的下标cout<<"输出 find:"<<endl;cout<<"The first place:"<<pos1<<endl;cout<<"The last place:"<<pos2<<endl;cout<<"The location of first number:"<<pos3<<endl;cout<<"The location of first char:"<<pos4<<endl;cout<<"The location of last number:"<<pos5<<endl;cout<<"The location of last char:"<<pos6<<endl;//如果搜索失败,则返回一个无符号数-1auto num=str1.find("daxue");if(num==-1)cout<<"Fail"<<endl;cout<<string::npos<<endl;//利用find函数查找一个字符串中出现了多少个数字字符string::size_type pos=0;while((pos=name.find_first_of(numbers,pos))!=string::npos){cout<<"found number at index:"<<pos<<"element is "<<name[pos]<<endl;++pos;}//逆向搜索string river("Mississippi");auto first_pos=river.find("is");//从左向右搜索,第一个is出现的位置auto last_pos=river.rfind("is");//从右向左搜索,最后一个is出现的位置cout<<endl;cout<<"first_pos"<<first_pos<<endl;cout<<"last_pos"<<last_pos<<endl;//compare函数int result=0;result=numbers.compare(name);cout<<endl;cout<<result<<endl;//整数转换为字符串long long int i=425644;string str2=to_string(i);//函数实参只能是long long int,unsigned long long int,long doublecout<<endl<<"输出 long long int to string:"<<str2<<endl;//字符串转换为浮点数double d=stod(str2);cout<<endl<<"输出 string to double/float:";cout<<d<<endl;string str5="pi=3.14";cout<<stof(str5.substr(str5.find_first_of("+-.0123456789")))<<endl;//append函数,作用是在string的末尾进行插入操作的一种方法,s.append(args)返回一个指向s的引用cout<<endl<<"输出 insert/append/replace:"<<endl;string str3("c++ primer");string str4=str3;str3.insert(str3.size()," 4th Ed.");cout<<str3<<endl;str4.append(" 4th Ed.");cout<<str4<<endl;//replace函数,s.replace(range,args)删除s中范围range内的字符,替换为args指定的字符,range或者是一个下标和长度,或者是一对迭代器,返回一个指向s的引用str4.replace(11,3,"11th");cout<<str4<<endl;//insert函数和erase函数cout<<endl<<"输出 insert/erase:";string str6="ZJU";str6.insert(str6.size(),5,'!');//s.insert(pos,args),在pos之前插入args制定的字符cout<<str6<<endl;string str7=str6.erase(str6.size()-5,5);//s.erase(pos,len)删除从pos开始的len个字符,如果len被省略,则删除从pos开始直至s末尾的所有字符,返回一个指向s的一个引用cout<<str7<<" "<<str6<<endl;//s.erase(pos,len)返回一个指向s的引用string::iterator iter;iter=str6.insert(str6.begin(),'h');//返回一个指向新插入的字符的迭代器cout<<(*iter)<<endl;//assign函数,s.assign(args),将s中的字符替换为args指定的字符,返回一个指向s的引用cout<<endl<<"输出 assign:";const char *cp="stately,plump back";string str8;str8.assign(cp,7);cout<<str8<<endl;}




0 0
原创粉丝点击