C++中string简述
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简述相关推荐
- string 相等 java_java中String相等问题
1.首先介绍三个String对象比较的方法: (1)equals:比较两个String对象的值是否相等.例如: String str1 = "hello quanjizhu"; S ...
- 2.Java中String,StringBuilder以及StringBuffer的关系与区别
String StringBuffer StringBuilder String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量 ...
- java中String new和直接赋值的区别
Java中String new和直接赋值的区别 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...
- java中String的常用方法
java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len ...
- java中String,int,Integer,char、double类型转换
java中String,int,Integer,char.double类型转换----https://www.cnblogs.com/kangyu222/p/5866025.html 转载于:http ...
- 标准C++中string类用法总结
2019独角兽企业重金招聘Python工程师标准>>> 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好 ...
- java中String对象和String变量
2019独角兽企业重金招聘Python工程师标准>>> java中String对象和String变量 (2011-12-27 20:40:27) 转载▼ 标签: it 最近在论坛上看 ...
- int的长度_Java中String长度有限制吗?身边的同事每一个人知道!
你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 www.toutiao.com/i6893014573322863111 推荐: ...
- java中的string函数_java中string.trim()函数的作用实例及源码
trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...
最新文章
- asp.net开发中自定义网站的目录
- Sql Server截断日志(转)
- C# 打印多页tif
- Java黑皮书课后题第5章:5.8(找出得最高分的学生)编写程序,提示用户输入学生的个数、每个学生名字及分数,最后显示获得最高分的学生
- MySQL服务的启动和停止
- DRL实战 : Dynamic Programming
- excel数据透视表应用大全_从Excel进阶到Python:更强大的数据透视表
- 揭露杀毒软件的那些密秘
- 杨韬的Python/Jupyter学习笔记
- matlab图形黎曼几何,[转载]黎曼几何是篡改数学概念的几何
- 【大爱】C++STL 常用 函数 用法(转载自duoduo3_69)
- mac无法关机_Mac无法关机时该怎么办
- oracle查看所有表信息和字段信息以及注释信息等
- 图像紫边消除(depurple)
- 计算机技术在生物教学中应用,信息技术在生物教学中的应用
- 进程process和线程thread应用和区别——Python学习笔记12
- 软件工程与计算II-23-软件工程职业基础
- VBA转换excel文件为txt
- 【转】Linux系统下不同机器之间拷贝文件的方法
- 手动搭建 Discuz! 论坛
热门文章
- 腾讯大讲堂-1.4亿同时在线背后的故事_学习笔记(二)
- 【新手向】keras如何计算top5
- parser.add_argument metavar
- 2022.9.24 第2次周报
- 【车载助手形象系列二】---车载助手数智人形象制作可以使用AI绘图替代?
- 总结octet与byte的区别
- 用计算机画磁化曲线方法,试验铁磁材料的静态磁化曲线测量试验目的学习用电子积分.DOC...
- 离散数学---符号解释
- 荧光标记阳离子脂质体靶向载药定位的应用
- linux 鸟哥私房菜 从0到1 笔记(五)