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. asp.net开发中自定义网站的目录
  2. Sql Server截断日志(转)
  3. C# 打印多页tif
  4. Java黑皮书课后题第5章:5.8(找出得最高分的学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生
  5. MySQL服务的启动和停止
  6. DRL实战 : Dynamic Programming
  7. excel数据透视表应用大全_从Excel进阶到Python:更强大的数据透视表
  8. 揭露杀毒软件的那些密秘
  9. 杨韬的Python/Jupyter学习笔记
  10. matlab图形黎曼几何,[转载]黎曼几何是篡改数学概念的几何
  11. 【大爱】C++STL 常用 函数 用法(转载自duoduo3_69)
  12. mac无法关机_Mac无法关机时该怎么办
  13. oracle查看所有表信息和字段信息以及注释信息等
  14. 图像紫边消除(depurple)
  15. 计算机技术在生物教学中应用,信息技术在生物教学中的应用
  16. 进程process和线程thread应用和区别——Python学习笔记12
  17. 软件工程与计算II-23-软件工程职业基础
  18. VBA转换excel文件为txt
  19. 【转】Linux系统下不同机器之间拷贝文件的方法
  20. 手动搭建 Discuz! 论坛

热门文章

  1. 腾讯大讲堂-1.4亿同时在线背后的故事_学习笔记(二)
  2. 【新手向】keras如何计算top5
  3. parser.add_argument metavar
  4. 2022.9.24 第2次周报
  5. 【车载助手形象系列二】---车载助手数智人形象制作可以使用AI绘图替代?
  6. 总结octet与byte的区别
  7. 用计算机画磁化曲线方法,试验铁磁材料的静态磁化曲线测量试验目的学习用电子积分.DOC...
  8. 离散数学---符号解释
  9. 荧光标记阳离子脂质体靶向载药定位的应用
  10. linux 鸟哥私房菜 从0到1 笔记(五)