【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



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


目录
相关文章
|
7月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
697 55
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
313 5
|
5月前
|
Java
介绍String.format()方法中的格式占位符用法。
通过综合使用它们,可以在Java中构造非常具体和高度定制的输出格式。这对于输出报道、创建用户界面或者任何需要精确控制输出格式的场合都非常有用。记住,当使用格式化方法时,需要确保提供的输入参数与占位符类型匹配,否则会抛出 java.util.IllegalFormatException。
663 0
|
10月前
|
存储 算法 Java
JVM: 内存、类与垃圾
分代收集算法将内存分为新生代和老年代,分别使用不同的垃圾回收算法。新生代对象使用复制算法,老年代对象使用标记-清除或标记-整理算法。
154 6
|
9月前
|
Java
非静态内部类持有外部类引用导致内存溢出
非静态内部类持有外部类引用导致内存溢出
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
288 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
642 4
|
存储 Java 程序员
结构体和类的内存管理方式在不同编程语言中的表现有何异同?
不同编程语言中结构体和类的内存管理方式既有相似之处,又有各自的特点。了解这些异同点有助于开发者在不同的编程语言中更有效地使用结构体和类来进行编程,合理地管理内存,提高程序的性能和可靠性。
264 3
|
存储 缓存 Java
结构体和类在内存管理方面的差异对程序性能有何影响?
【10月更文挑战第30天】结构体和类在内存管理方面的差异对程序性能有着重要的影响。在实际编程中,需要根据具体的应用场景和性能要求,合理地选择使用结构体或类,以优化程序的性能和内存使用效率。
|
存储 缓存 算法
结构体和类在内存管理方面有哪些具体差异?
【10月更文挑战第30天】结构体和类在内存管理方面的差异决定了它们在不同的应用场景下各有优劣。在实际编程中,需要根据具体的需求和性能要求来合理选择使用结构体还是类。

热门文章

最新文章