【C++ 语言】C++字符串 ( string 类 | 创建方法 | 控制台输出 | 字符串操作 | 栈内存字符串对象 | string* )(一)

简介: 【C++ 语言】C++字符串 ( string 类 | 创建方法 | 控制台输出 | 字符串操作 | 栈内存字符串对象 | string* )(一)

C++ 字符串 对象


C++ 字符串 :


1.string 类 : C++ 中的字符串是 string 类 对象 ;

2.string 类定义位置 : 该 string 类定义在 iostream 头文件中 , 不必引入另外的头文件 ;

#include <iostream>




C++ 字符串 对象 创建方法


C++ 字符串 对象 创建方法 :


1.直接赋值 : 直接使用 C 字符串赋值 ;

//① 使用字符串赋值
  string string_c_plus_1 = " Hello ";


2.构造方法 : 调用 string 构造方法 创建 string 对象 ;

① 传入 string 参数 : string 构造方法可以传入 string 对象 ;

② 传入 C 字符串参数 : string 构造方法也可以传入 一个 C 字符串 ;

//② 调用构造方法 初始化字符串
  string string_c_plus_2(string_c_plus_1);
  string string_c_plus_3(" World ");


3.使用 new 分配内存 : 使用 new 为 String 对象分配一块堆内存空间 , 返回 string * 类型的指针 ;

//③ 使用 new 申请的内存 , 需要使用 delete 释放
  string *string_c_plus_4 = new string(" New ");
  delete string_c_plus_4;


调用该 string* 对象的方法需要使用 -> 进行调用 ;


堆内存使用原则 :

① 使用 new 申请的内存 , 需要使用 delete 释放 ;

② 使用 new [] 申请的数组 , 需要使用 delete[] 释放 ;

③ 使用 malloc 申请的内存 , 需要使用 free 释放 ;




C++ 字符串 对象 输出到控制台


C++ 字符串 对象 输出到控制台 :


1.不能直接使用 cout 输出 : 下面的用法是错误的 ; 使用 cout 不能直接将 string 对象输出 ;

//这种用法是错误的
  string string_c_plus_1 = " Hello ";
  cout << string_c_plus_1 << endl;


2.输出方法 : 需要将 string 对象转成 C 字符串 , 然后再输出 :

//调用 string 对象的 c_str() 方法 , 获取其 C 字符串 , 然后再输出到控制台
  string string_c_plus_1 = " Hello ";
  cout << string_c_plus_2.c_str() << endl;


在 Java 中输出 String 对象 , 默认会调用其 toString 方法 , 但是在 C 中不可以直接使用 ;




C++ 字符串 拼接


C++ 字符串拼接 :


1.使用 “+” 符号拼接 : 这里的加号进行了操作符重载 , 字符串之间相加代表了字符串的拼接操作 ;

//① "+" : 操作符重载 , 重新定义了 加号运算符的行为 , 
  //  这里加号可以实现字符串拼接 , 与 Java 类似
  string string_c_plus_5 = string_c_plus_1 + string_c_plus_3;


2.调用 string 对象的 append 方法 : 调用 string 对象的 append() 方法 , 传入要拼接的字符串 ;

//② 调用 string 对象的 append 方法 , 拼接字符串
  string string_c_plus_6 = string_c_plus_1.append( string_c_plus_3 );


3.代码示例 :

//C++ 字符串拼接
  //① "+" : 操作符重载 , 重新定义了 加号运算符的行为 , 这里加号可以实现字符串拼接 , 与 Java 类似
  //② 调用 string 对象的 append 方法 , 拼接字符串
  string string_c_plus_5 = string_c_plus_1 + string_c_plus_3;
  string string_c_plus_6 = string_c_plus_1.append( string_c_plus_3 );


4.运行结果 :

Hello  World
 Hello  World

image.png

操作符重载 : 重新定义了操作符的作用 , 这里的 “+” 就是重新定义了其作用 , 拼接字符串 ;




C++ 字符串 方法调用 ( 栈内存对象 )


C++ 字符串 方法调用 : 该字符串 ( string ) 对象 在栈内存中 ;


1.获取字符串长度 : 调用 string 对象的 size() 方法 , 即可返回字符串长度 ;

//① 使用字符串赋值
  string string_c_plus_1 = " Hello ";
  //获取 C++ 字符串长度 : 调用 string 对象的 size() 方法 , 获取字符串长度
  int string_c_plus_1_size = string_c_plus_1.size();


2.判断字符串是否为空 : 调用 string 对象的 empty() 方法 , 判断字符串是否为空 ;

//① 使用字符串赋值
  string string_c_plus_1 = " Hello ";
  //判断 C++ 字符串是否为空 : 调用 string 对象的 empty() 方法 ; 
  bool string_c_plus_1_empty = string_c_plus_1.empty();


3.代码示例 :

//使用字符串赋值
  string string_c_plus_1 = " Hello ";
  //获取 C++ 字符串长度 : 调用 string 对象的 size() 方法 , 获取字符串长度
  int string_c_plus_1_size = string_c_plus_1.size();
  cout << "string_c_plus_1_size : " << string_c_plus_1_size << endl;
  //判断 C++ 字符串是否为空 : 调用 string 对象的 empty() 方法 ; 
  bool string_c_plus_1_empty = string_c_plus_1.empty();
  cout << "string_c_plus_1_empty : " << string_c_plus_1_empty << endl;


4.运行结果 :

string_c_plus_1_size : 14
string_c_plus_1_empty : 0

image.png



使用 “.” 方式调用栈内存对象的方法 ;


目录
相关文章
|
1月前
|
存储 Windows
内存卡坏了还能修吗?4种常见修复方法
内存卡出现“无法保存”或“存储异常”等问题时,不一定是硬件损坏,可能是系统错误或文件系统异常导致。本文介绍几种亲测有效的修复方法:1) 更换读卡设备排除接触问题;2) 格式化修复文件系统(需先备份数据);3) 使用DiskGenius检测坏道;4) 借助厂商工具深度修复。同时提供日常保养建议,如避免高温环境、养成数据备份习惯,延长内存卡使用寿命。通过这些方法,多数问题可轻松解决,无需更换硬件。
|
2月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
258 55
|
4月前
|
Java
非静态内部类持有外部类引用导致内存溢出
非静态内部类持有外部类引用导致内存溢出
|
5月前
|
存储 IDE Java
java设置栈内存大小
在Java应用中合理设置栈内存大小是确保程序稳定性和性能的重要措施。通过JVM参数 `-Xss`,可以灵活调整栈内存大小,以适应不同的应用场景。本文介绍了设置栈内存大小的方法、应用场景和注意事项,希望能帮助开发者更好地管理Java应用的内存资源。
244 4
|
5月前
|
存储 算法 Java
JVM: 内存、类与垃圾
分代收集算法将内存分为新生代和老年代,分别使用不同的垃圾回收算法。新生代对象使用复制算法,老年代对象使用标记-清除或标记-整理算法。
73 6
|
6月前
|
存储 安全 iOS开发
内存卡怎么格式化?6个格式化方法供你选
随着使用时间的增加,内存卡可能会因为数据积累、兼容性或是文件系统损坏等原因需要进行格式化。那么怎样正确格式化内存卡呢?格式化内存卡的时候需要注意什么呢?本文会给大家提供详细的步骤,帮助大家轻松完成格式化内存卡的操作。
|
7月前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
182 5
|
8月前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
185 6
|
8月前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
483 62
|
8月前
|
编译器 Go
探索 Go 语言中的内存对齐:为什么结构体大小会有所不同?
在 Go 语言中,内存对齐是优化内存访问速度的重要概念。通过调整数据在内存中的位置,编译器确保不同类型的数据能够高效访问。本文通过示例代码展示了两个结构体 `A` 和 `B`,尽管字段相同但排列不同,导致内存占用分别为 40 字节和 48 字节。通过分析内存布局,解释了内存对齐的原因,并提供了优化结构体字段顺序的方法,以减少内存填充,提高性能。
88 3