多平台统一管理软件接口,如何实现多平台统一管理软件接口
448
2022-11-01
C++ STL中string的详细总结
文章目录
一、string的构造函数的形式二、 string的大小和容量三、string的字符串比较
注:可以就看到,当strcmp()按照字典序比较,返回值>=0时,算数运算符的比较结果为0;返回值<0时,算数运算符的比较结果为1;
四、string的插入(针对char)五、string拼接字符串(针对string)六、 string的遍历七、string的删除八、 string的字符替换
string& replace(size_t pos, size_t n, const char *s);string& replace(size_t pos, size_t n1, size_t n2, char c);string& replace(iterator iter1, iterator iter2, const char* s);
九、字符串的分割和截取十、大小写转换十一、字符串排序
一、string的构造函数的形式
//生成空字符串 string(); //生成字符串str的复制品 string(const string& str); string(const char* s); //将字符串str中始于begin、长度为len的部分作为字符串初值,若越界则复制到字符串末尾就截至 string(const string& str, size_t begin, size_t len); string(const char* s, size_t begin, size_t len); //从begin_pos开始往后复制,包括begin_pos string(const string& str, size_t begin_pos); //从开头复制到end_pos,不包括end_pos string(const char* s, size_t end_pos); //复制n个c形成一个字符串 string(size_t n, char c);
实例:
void construct(){ string str1; //生成空字符串 string temp = "123456789"; string str2(temp); string str3("123456789"); string str4(temp, 2, 4);//"3456" string str5("123456789", 2, 4);//"3456" string str6(temp, 2);//3456789 string str7("123456789", 2);//12 string str8(5, '1');//"11111" cout<<"str1="< 运行结果: 注:可以就看到,当strcmp()按照字典序比较,返回值>=0时,算数运算符的比较结果为0;返回值<0时,算数运算符的比较结果为1; 四、string的插入(针对char) push_back(char c) :在尾部插入字符cinsert(iterator p, char c):在指定位置插入字符c ; cout<<" str创建时的地址:"<<&str< 运行结果: 注:通过结果可以看到不管是push_back、insert还是直接通过 连接,字符串的地址都不变,可知并不是重新生成了一个新的对象,而是直接在内存空间里修改的 五、string拼接字符串(针对string) append() 和 操作符 void str_joint(){ /* string str(" aaa");="" str.c_str()="" 相当于把string对象转换成了const="" char*="" 当然="" 操作对于string对象和const="" 都是有效的="" *="" string="" str1="123" str2="456" cout<<"str1创建时的地址"<<&str1<
运行结果:
注:通过结果可以看到不管是append还是直接通过 连接,字符串的地址都不变,可知并不是重新生成了一个新的对象,而是直接在内存空间里修改的
六、 string的遍历
索引方式或迭代器都能实现遍历
void str_traverse(){ string str("123456"); //索引法一 for(int i=0; i
运行结果:
七、string的删除
1、从给定起始位置pos处开始删除, 要删除字符的长度为n, 返回值修改后的string对象引用basic_string & erase(size_type pos=0, size_type n=npos); 示例:
= "0123456789"; // 从位置pos=5处开始删除,包括位置5,直到结尾,剩余01234 str1.erase(5); cout<
运行结果:
2、删除迭代器位置处的单个字符, 并返回下个元素的迭代器
iterator erase(const_iterator position)
示例:
= "0123456789"; // 删除str初始位置的字符 str.erase(str.begin()); cout<
3、删除迭代器[first, last)区间的所有字符,返回一个指向被删除的最后一个元素的下一个字符的迭代器iterator erase(const_iterator first, const_iterator last)
// 删除str从位置5开始,包括位置5,到末尾的所有字符,剩余01234 string str = "0123456789"; str.erase(str.begin()+5, str.end()); cout<
4、删除string中最后一个的字符pop_back()
string str = "1234";str.pop_back();//剩余123,新特性,若报错,则要更新MinGW
八、 string的字符替换
1、 将当前字符串从pos索引开始的n个字符,替换成字符串s
string& replace(size_t pos, size_t n, const char *s);
2、将当前字符串从pos索引开始的n1个字符,包括第n1个字符,替换成n2个字符c
string& replace(size_t pos, size_t n1, size_t n2, char c);
3、将当前字符串[iter1,iter2)区间中的字符串替换为字符串s
string& replace(iterator iter1, iterator iter2, const char* s);
void str_replace(){ string str1 = "0123456789"; // string& replace(size_t pos, size_t n, const char *s) str1.replace(6, 5, "haha"); //012345haha cout<
运行结果:
九、字符串的分割和截取
分割函数: char *strtok(char *s,const char *delim)
功能:分解字符串为一组字符串,s为要分解的字符串,delim为分隔字符串
分析:strtok()用来将字符串分割成一个个片段,参数s指向将要被分隔的字符串,参数delim则为分隔字符串。当strtok()在参数s的字符串中发现到参数delim的分隔字符时,则会将该字符改为’\0’字符。在第一次调用时,strtok()必须给予参数s字符串,往后的调用则将参数s设置成NULL,每次调用成功则返回被分隔片段的指针
void str_tok_sub(){ char str[] = "I,am,from,shannxi.as a C programmer!"; const char *split = ", .!"; //在第一次调用时,strtok()必须给予参数s字符串 char *p2 = strtok(str,split); while( p2 != NULL ) { cout<
运行结果:
截取:
1、str字符串begin的位置开始截取到str末尾,包括位置begin
string str.substr(size_t begin)
2、从str字符串begin位置开始截取len个字符,包括位置begin,若越界则截取到str末尾
string str.substr(size_t begin, size_t len)
str2("0123456789"); string res1 = str2.substr(5); //56789 string res2 = str2.substr(1,5); //12345 cout<
注:截取操作不改变原字符串
十、大小写转换
tolower()和toupper()
void str_trans(){ string str = "ABCDE"; for( int i = 0; i < str.size(); i ) str[i] = tolower(str[i]); cout<
运行结果:
十一、字符串排序
最后一个了,比较简单,直接给代码吧
void str_sort(){ string str("9128765340"); sort(str.begin(), str.end());//按照字典序排序 cout<
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~