1.string容器基本概念

本质:

  • string容器是C++风格的字符串,而string本质上是一个类;

string和char*的区别

  • char*是一个指针;
  • string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器;

特点:

string内部封装了很多成员方法,类似find,copy,delete,replace,insertd等;

string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责;

2 string构造函数

构造函数原型

  • sting();//创建一个空的字符串,例如string str;
  • string(const char* s);//使用字符串s初始化;
  • string(const string& str); //使用一个string对象初始化另一个对象
  • string(int n,char c);//使用n个字符c初始化;
#icnlude<iostream>
#include<string>
using namespace std;
/**
sting();//创建一个空的字符串,例如string str;
string(const char* s);//使用字符串s初始化;
string(const string& str); //使用一个string对象初始化另一个对象
string(int n,char c);//使用n个字符c初始化;
*/
test01()
{string s1;const char *str = "hello world";string s2(str);string s3(s2);string s4(10,a);
}
int main()
{test01();return 0
}

3 string 赋值操作

给string字符串进行赋值;

赋值的函数原型:

  • string& operator-(const char* s); //char*类型字符串赋值给当前的字符串
  • string& operator-(const string &s); //把字符串s赋给当前的字符串
  • string& operator-(char C); //字符赋值给当前的字符串
  • string& assign(const char *s); //把字符串s赋给当前的字符串
  • string& assign(const char *s, int n); //把字符串s的前n个字符局给当前的字符串
  • string& assign(const string &s); //把产符串s赋给当前字符串
  • string& assign(int n, char C); //用n个字符c赋给当前字符串

4 string 字符串拼接

实现字符串末尾拼接字符串

函数原型:

●string& operator+=(const char* str);

//重载+=操作符

string& operator+-(const char C);

//重载+=操作符

●string& operator+-(constl string& str);

//重载+-操作符

●string& append(const char *s);

//把字符串s连接到当前字符串结尾

● string& append(const char *s, int n);

//把字符串s的前n个字符连接到当前字符串结尾

●string& append(const string 8&5);

///同operator+=(const string& str)

●string& append(const string 8&s, int pos, int m);

//字符串s中从pos开始的n个字符连接到字符串结尾

void test01()
{string str1 = "我";str1+="想成功";cout << str1 <<endl;//输出结果:我想成功;//append方法拼接字符串;string str3 = "I";str3.append("love");cout << str3 <<endl;//输出结果:Ilovestr3.append("whoever",3);cout << str3 <<endl;//输出结果:Ilovewhostr3.append(str1);cout << str3<< endl;//输出结果:Ilovewho我想成功;str3.append("真好啊难道不是吗?",2 ,5)//cout << str3<<endl;//输出结果:Ilovewho我想成功啊难道不是
}
int main()
{test01();return 0;
}

5string查找和替换

查找:查找指定字符串是否存在

替换:在指定的位置替换字符串

函数原型:

●int find(const string& str, int pos . 0) const;

//直找str第- -次出现位置,从pos开始查找

● int find(const chari s, int pos .0) const;

//查找s第- -次出现位置,从pos开始查找

●| int find(const char s, int pos, int n) const;

//从pos位置查找s的前n个字符第一-次位置

●int find(const char C, int pos . e) const;

//查找字符c第一次出现位置

● int rfind(const string& str, int pos . npos) const;

//查找str最后- -次位置,从pos开始查找

● int rfind(const char" s, int pos = npos) const;

//查找s最后- -次出现位置从pos开始查找

●int rfind(const char s,Int pos, Int n) const;

//从pos查找s的前n个字符最后一-次位置

● int rfind(const Char C,int pos . 0) const;

//查找字符C最后- -次出现位置

● string& replace(int pos, int n, const string& str);

//替换从pos开始n个字符为字符串str

●string& replace(int pos, int n,const char* S);

//替换从pos开始的n个字符为字符串s

void test01()
{string str = "abcdefg";int pos = str.find("de");cout << pos<<endl;//输出结果:3【d首次出现的位置,如果没有查到,测返回-1】//rfind方法pos = str.rfind("de");cout << pos<< endl;//输出结果:3【rfind是从右往左找】//替换方法
}
void test02()
{string str = "abcdefg";str.replace(1,3,"1111");cout << str<< endl;//输出结果:a1111efg;【cong1号位置起,3个字符替换为“1111”】
}
int main()
{test01();test02();return 0.
}

6 字符串比较

功能描述:字符串之间的比较

比较方式:

字符串比较是按字符的ASCII码进行对比

=返回0;

>返回1;

<返回-1;

函数原型:

int compare(const string &s) const;//与字符串比较;

int compare(const char *s) const;//与字符串比较;

void test01()
{string str1 = "hello";string str2 = "hello";if(str1.compare(str2) == 0){cout << "两个字符串相等" << endl;}else if(str1.compare(str2) >0){cout << "str1大于str2" << endl;}else if(str1.compare(str2)){cout << "str1小于str2" << endl;}
}
int main()
{test01();return 0;
}

7string字符存取

string中单个字符存取方式有两种

char& operator[ ] (int n); //通过[ ]方法取字符

char& at(int n); //通过at方法获取字符

void test01()
{string str = "hello";cout << str<< endl;//1.通过[]方法取字符for(int i = 0;i < str.size();i++){cout << str[i]<< " ";}//2.通过at方法获取字符for(int i = 0;i<str.size();i++){cout << str.at(i)<< endl;//修改字符str.at(2)= X;cout << str.at(i)<<endl;//输出结果:heXlo;}
}

8 string插入和删除

功能描述:对string字符串进行插入和删除字符操作

函数原型:

●string& insert(int pos, const char s);

//插入字符串

●string& insert(int pos, const string& str);

//插入字符串

● string& insert(int-pos, int n,char c);

//在指定位置插入n个字符C

●string& erase(int pos, int n . npos);

//删除从Pos开始的n个字符

void test01()
{string str = "hello";//插入str.insert(1,"111");cout <<str<< endl;//输出结果;h111ello//删除str.erase(1,3);//1是1的下标位置,3是删掉3个元素cout << str<< endl;//输出结果:hello
}

9strig字串

功能描述:从字符串中获取想要的字串

函数原型:

  • string substr(int pos = 0,int n = npos)const ;//返回由pos开始的n个字符组成的字符串;
void test01()
{string str = "abcdefgh"lstring strSub = str.substr(1,3);cout << strSub << endl;//输出结果:bcd;
}
void test02()
{//从邮件中截取用户信息string email = "zhangsan@qq.com";int pos = email.find("@");string userName = email.substr(0,pos);cout << userName << endl;//输出结果:zhangsan;
}
int main()
{test01();test02();return 0;
}

C++中string简述相关推荐

  1. string 相等 java_java中String相等问题

    1.首先介绍三个String对象比较的方法: (1)equals:比较两个String对象的值是否相等.例如: String str1 = "hello quanjizhu"; S ...

  2. 2.Java中String,StringBuilder以及StringBuffer的关系与区别

    String     StringBuffer     StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...

  3. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  4. java中String的常用方法

    java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len ...

  5. java中String,int,Integer,char、double类型转换

    java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...

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

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

  7. java中String对象和String变量

    2019独角兽企业重金招聘Python工程师标准>>> java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看 ...

  8. int的长度_Java中String长度有限制吗?身边的同事每一个人知道!

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 www.toutiao.com/i6893014573322863111 推荐: ...

  9. java中的string函数_java中string.trim()函数的作用实例及源码

    trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...

最新文章

  1. AR设备单目视觉惯导SLAM算法综述与评价
  2. php 防止刷新重复提交,php防止刷新与重复提交实例代码
  3. C# WebApi+Task+WebSocket实战项目演练(四)
  4. 问题 “cell 出栈 selectBox 已选的图标,被释放掉,再次进入屏幕时,没有了已选图标 ” 解决方案...
  5. Nginx学习笔记(一)
  6. 正式请求:Could you...? May I...? _52
  7. ul 原点显示_html ul li在div里圆点靠左对齐
  8. android程序中关于webview加载html文件
  9. 软件公司多注重开发不注重管理
  10. flask中的session对象方法
  11. 阿里云虚拟主机安装wordpress,提示连接数据库失败的解决方法
  12. GlusterFS卷的种类
  13. How to disable cursor positioning and text selection in an EditText? (Android)
  14. 对抗攻击经典论文剖析(上)【FGSM、BIM、PGD、Carlini and Wagner Attacks (CW)】
  15. 自建KMS激活服务器:CentOS安装vlmcsd搭建
  16. u盘容量影响计算机运行速度,插u盘导致电脑运行速度慢的解决方法
  17. windows 安装cab文件
  18. Nuvoton新唐单片机利用 CAN 总线技术解决楼宇电梯控制问题
  19. C# Winfrom Excel表格导出 Aspose.Cells超简单方式
  20. csgo中国上海服务器因维护,2019CSGO亚洲邀请赛11月20日战火重燃 再临上海

热门文章

  1. 数据库厂商都怕低价竞争?阿里云说并不可惧
  2. X64驱动:读取SSDT表基址
  3. MOVSB、MOVSW和MOVSD指令
  4. 【转】什么是WTW Wi-Fi 6(802.11ax)解析18:TWT节能机制(Target Wake Time)
  5. 秒杀99%的海量数据处理面试题
  6. 使用TCP时序图解释BBR拥塞控制算法的几个细节
  7. html动画之制作烟花效果,JavaScript实现烟花绽放动画效果
  8. 基于SSH的硬件销售管理系统
  9. Autosar之自签名证书与CA证书
  10. 一些你不知道的好玩的有趣的linux命令 Linux终端下的ASCII艺术