原文地址:https://blog.csdn.net/lsh_2013/article/details/46728993

标准c++中String类非常强大,合理使用,能极大提高编程效率,下面就对string类的用法进行总结。

头文件

#include<string>

##String类的构造函数如下:

  1. string s; //生成一个空字符串s

  2. string s(str) //拷贝构造函数生成str的复制品

  3. string s(str,index) //将字符串str内“始于位置index”的部分当作字符串的初值

  4. string s(str,index, n) //将字符串str内“始于index且长度顶多n”的部分作为字符串的初值

  5. string s(cstr) //将C字符串作为s的初值

  6. string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。

  7. string s(n,c) //生成一个字符串,包含n个c字符

  8. string s(str.begin(),str.end()) //以区间begin():end() (不包含end())内的字符作为字符串s的初值


#include <iostream>
#include <string>
using namespace std;
int main ()
{//定义string s0 ("abcdefghijklmn");string s1;string s2 (s0);string s3(s0,3);string s4 (s0,3, 4);string s5 ("let us learn string");string s6 ("let us learn string",6);string s7 (10, 'x');    string s8 (s0.begin(), s0.begin()+7);//输出cout << "s1: " << s1 << "\ns2: " << s2 << "\ns3: " << s3;cout << "\ns4: " << s4 << "\ns5: " << s5 << "\ns6: " << s6;cout << "\ns7: " << s7 << "\ns8: " << s8 << '\n';return 0;
}

##String类常用的操作函数

之后会对相关函数进行讲解,如果不想将下面操作函数全部看完,大伙可以找自己感兴趣的函数看。

1) =,assign()   //赋以新值2) swap()   //交换两个字符串的内容3)+=,append(),push_back() //在尾部添加字符4) insert() //插入字符5) erase() //删除字符6) clear() //删除全部字符7) replace() //替换字符8) + //串联字符串9)==,!=,<,<=,>,>=,compare()  //比较字符串10)size(),length()  //返回字符数量11) max_size() //返回字符的可能最大个数12) empty()  //判断字符串是否为空13) capacity() //返回重新分配之前的字符容量14) reserve() //保留一定量内存以容纳一定数量的字符15) [ ], at() //存取单一字符16)>>,getline() //从stream读取某值17) <<  //将谋值写入stream18) copy() //将某值赋值为一个C_string19) c_str() //将内容以C_string返回20) data() //将内容以字符数组形式返回21) substr() //返回某个子字符串22)查找函数23)begin() end() //提供类似STL的迭代器支持24) rbegin() rend() //逆向迭代器25) get_allocator() //返回配置器

##字符串添加


#include <string>
#include <iostream>
using namespace std;
int main(void)
{string s1;//尾部插入字符s1.push_back('a');s1.push_back('b');s1.push_back('c');cout << "打印s1: " << s1 << endl;char* cArray="efgh";string s2(cArray);cout << "打印s2: " << s2 << endl;//字符串的"+"操作cout << "打印s1+s2: " << s1 + s2 << endl;//字符串s1后添加字符串s2cout << "append后,打印s1: " << s1.append(s2) << endl;//在s1的第个字符位置前插入字符'8's1.insert(s1.begin()+1,'8');cout << "insert后,打印s1: " << s1 << endl;//字符串的"+="操作s1+=s2;cout << "s1+=s2后,打印s1: " << s1 << endl;return 0;
}

##字符的遍历


#include <string>
#include <iostream>
using namespace std;
int main(void)
{char* cArray="hello, world!";string s(cArray);//数组方式for(unsigned int j=0; j< s.size(); j++)cout << "第" << j << "个字符: " << s[j] << endl;//迭代器方式string::reverse_iterator ri;cout << "反向打印字符" << endl;for(ri=s.rbegin(); ri!=s.rend(); ri++)cout << *ri << ' ' ;cout << endl;return 0;
}

##字符的删除

1)iterator erase(iterator p);//删除字符串中p所指的字符2)iterator erase(iterator first, iterator last);//删除字符串中迭代器区间[first,last)上所有字符3)string& erase(size_t pos = 0, size_t len = npos);//删除字符串中从索引位置pos开始的len个字符4)void clear();//删除字符串中所有字符

#include <string>
#include <iostream>
using namespace std;
int main(void)
{string s("12345678a");s.erase(s.begin());cout << s << endl; //打印出:a s.erase(s.begin()+3, s.end()-2);cout << s << endl; //打印出:as.erase(0,2);cout << s << endl; //打印出:as.clear();return 0;
}

##字符的替换

1)string& replace(size_t pos, size_t n, const char *s);//将当前字符串从pos索引开始的n个字符,替换成字符串s2)string& replace(size_t pos, size_t n, size_t n1, char c); //将当前字符串从pos索引开始的n个字符,替换成n1个字符c3)string& replace(iterator i1, iterator i2, const char* s);//将当前字符串[i1,i2)区间中的字符串替换为字符串s

#include <string>
#include <iostream>
using namespace std;
int main(void)
{string s("hello,boy!");s.replace(6,3,"gril");  //boy替换为girlcout << s << endl;      //打印hello gril!s.replace(10,1,1,'.');  //将"hello gril!"的'!'替换为'.'cout << s << endl;      //打印hello gril.s.replace(s.begin(),s.begin()+5, "good morning");cout << s << endl;     //打印good morning girl.return 0;
}

[转载]stl之string类用法详细总结相关推荐

  1. stl之string类用法详细总结

    标准c++中String类非常强大,合理使用,能极大提高编程效率,下面就对string类的用法进行总结. 头文件 #include<string> String类的构造函数如下: 1)   ...

  2. STL 的string类怎么啦?

    STL 的string类怎么啦? 陈皓 前言 上个周末在和我的同学爬香山闲聊时,同学说到STL中的string类曾经让他备受折磨,几年前他开发一个系统前对string类还比较清楚,然后随着程序的复杂度 ...

  3. STL之string类:知其然,需知其所以然

    目录 前言 一,构造及初始化 1.1constuct类函数 1.2构造函数及其模拟实现 1.3拷贝构造及其模拟实现 1.4赋值操作符 1.5string类的swap接口 二,迭代器 2.1初识迭代器即 ...

  4. 【贪玩巴斯】带你学:C++ tips ——知识点:string::npos 用法详细解析 , 看这一篇就够了 2021年12月21日

    [贪玩巴斯]带你学:C++ tips --知识点:string::npos 用法详细解析 !!! 一.定义 二.使用 1.如果作为一个返回值(return value)表示没有找到匹配项 2.但是st ...

  5. 最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月16日)

    <Java每日练习题及题解>系列目录 1.有限条件求和_Java每日练习题及题解(11月15日) 2.最大质因数 最大回文数乘积 字符串String类用法_Java每日练习题及题解(11月 ...

  6. Java final String类的详细用法还有特性说明,自己也在学习.

    String 方法 package com.evangelsoft.crosslink;import java.io.UnsupportedEncodingException; import java ...

  7. C++——String类超详细介绍

    (欢迎及时指正错误!谢谢) STL的含义:标准模板库 STL的内容: 容器:数据的仓库 算法:与数据结构相关的算法.通用的算法(和数据结构无关) 注:熟悉常用的算法 sort  reverse 迭代器 ...

  8. 标准C++中string类用法总结

    2019独角兽企业重金招聘Python工程师标准>>> 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好 ...

  9. 转载:c+string类详解

    C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...

  10. 【C++STL】string类

    文章目录 前言 使用 重新赋值 删除 比较 复制 查找子串 返回字串与交换 运算符重载 迭代器 算法 总结 前言 本节课讲的是STL(Standard Template Library 标准模板库) ...

最新文章

  1. JS判断是移动端还是电脑端访问该网站
  2. [论文阅读] (03) 清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
  3. office2016打开PPT出现解决VBE6EXT.OLB不能被加载问题的解决办法
  4. angularjs directive2
  5. c语言学习-将一个2*3的矩阵转置为3*2的矩阵
  6. mysql 设置 server id_详解Mysql存储引擎
  7. jquery动画切换引擎插件 Velocity.js 学习01
  8. android多个网络请求如何依次执行,Android 并发和串行网络请求
  9. 实时增量学习在云音乐直播推荐系统中的工程实践
  10. 计算机整个桌面偏左,教你win10电脑屏幕往左偏怎么办
  11. 火狐浏览器设置cookie失败_如何启用火狐浏览器的Cookie功能 这些经验不可多得...
  12. javascript案例,专辑前6名
  13. 如何解决CC2640用IAR下载固件出现Fatal error: Failed to load the CPU core driver Session aborted的问题
  14. PAT 乙级 1020  月饼
  15. 干货|Android免Root最全Hook插件(免Root Hook任意App)
  16. ZCUM-1948: #6029. 「雅礼集训 2017 Day1」市场 线段树区间更新
  17. 计算机图形学 使用OpenGL的场景建模
  18. NVIDIA Tesla® K80 加速 数字全息实时重建
  19. 如何修改文件的创建时间和修改时间?
  20. 攻防世界Encode

热门文章

  1. linux查看ps进程命令,linux ps查看进程命令
  2. Jedis对redis分布式锁的操作(设置过期时间,UUID,LUA脚本)
  3. html表单-在线留言,aspcms自定义表单 在线留言修改
  4. CSS:结合clip-path实现目录的隐藏显示以及提示框的隐藏显示
  5. HTML:颜色列表(自用)
  6. OpenCV_Corner Detect with FastFeatureDetector(基于FAST的角点检测) 及 SUSAN算子
  7. 关于CUDA与CUDNN适配版本,以及安装中出现Bug的分析
  8. 有哪些激光雷达SLAM算法?
  9. Inception-ResNet-v1网络结构
  10. 元类介绍、自定制元类