C++中string类

简介: 🐰string类🏡string类的简介🏡C++11字符串的初始化🏡string类型中的赋值、拼接和附加🏡string的其他操作🏡string类I/O

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰string类

🏡string类的简介

🏡C++11字符串的初始化

🏡string类型中的赋值、拼接和附加

🏡string的其他操作

🏡string类I/O


🐰string类

🏡string类的简介

使用string类,必须在程序中包含头文件string。string类位于命名空间std中,因此必须提供一条using编译指令,或使用string::string来引用它。string类定义隐藏了字符串数组的性质,就可以处理普通变量那样处理字符串。

string对象和字符数组之间的主要区别是,可以将string对象声明为简单变量,而不是数组:

1. string str1;
2. string str1="hello C++!";

类设计可以自动处理string类型的大小。例如,str1的声明创建一个长度为0的string对象,但程序将输入读取到str1时,将自动调整str1的长度:

1. string str1;//str1的长度为0
2. cin>>str1;//长度发生了变化

这和使用数组相比,使用string对象更方便,也更安全。其实可以将字符数组看作一组存储一个字符串的char存储单元,而string类变量是一个表示字符串的实体

🏡C++11字符串的初始化

C++11也允许将列表初始化用于C风格的字符串和string对象

1. char data1[]={"hello C!"};
2. char data2[]{"hello C!"};
3. string Data1={"hello C++!"};
4. strinf Data2{"hello C++!"};

🏡string类型中的赋值、拼接和附加

使用string类时,某些操作比使用数组时更加简单。例如,不能将一个数组赋给另一个数组,但可以将一个string对象赋值另一个string对象

1. char arr[20];
2. char brr[20]={"Hello C!"};
3. arr=brr//不可以这样做,这样编译是错的
4. //数组的赋值应该是
5. strcpy(arr,brr);//利用拷贝函数实现数组的赋值
6. string str1;
7. string str2={"Hello C++!"};
8. str1=str2;//这样是完全正确的,C++里是允许的

string类简化了字符串合并的操作。可以使用运算符+将两个string对象合并起来,还可以使用运算符+=将字符串附加到string对象的末尾。

1. string str3;
2. str3=str1+str2;
3. str1+=str2;

例如:

1. #include<iostream>
2. #include<string>
3. using namespace std;
4. int main()
5. {
6.     string str1="Hello ";
7.     string str2="C++!";
8.     string str3;
9.     str3=str1+str2;
10.     cout<<"str3=str1+str1:"<<str3<<endl;
11.     str1+=str2;
12.     cout<<"str1+=str2:"<<str1<<endl;
13.     return 0;
14. }
15. 结果:
16. str3=str1+str1:Hello C++!
17. str1+=str2:Hello C++!

🏡string的其他操作

两种确定字符串中字符数的方法:

1. int lenth1=str1.lenth();
2. int lenth2=str2.size();

🏡string类I/O

可以使用cin和运算符>>来输入存储到string对象中,使用cout和运算符<<来显示string对象。但每次读取一行而不是一个单词。

用户输入之前,str1中的字符串的长度为0,这是因为未被初始化的string对象的长度自动被设置为0

下面将一行输入读取到string对象中

getline(cin,str);

cin>>str1//处理string对象的代码使用string类的一个友元函数。

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸



相关文章
|
25天前
|
存储 安全 C语言
C++ String揭秘:写高效代码的关键
在C++编程中,字符串操作是不可避免的一部分。从简单的字符串拼接到复杂的文本处理,C++的string类为开发者提供了一种更高效、灵活且安全的方式来管理和操作字符串。本文将从基础操作入手,逐步揭开C++ string类的奥秘,帮助你深入理解其内部机制,并学会如何在实际开发中充分发挥其性能和优势。
|
25天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
4天前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
33 16
|
3天前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
36 11
|
9天前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、&quot;+&quot;操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
|
7天前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
50 6
|
1月前
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)
|
9天前
|
存储 JavaScript Java
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化
|
1月前
|
C++
模拟实现c++中的string
模拟实现c++中的string
|
25天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。