【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



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


目录
相关文章
|
12月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
976 55
|
7月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
427 5
|
10月前
|
安全 C语言 C++
比较C++的内存分配与管理方式new/delete与C语言中的malloc/realloc/calloc/free。
在实用性方面,C++的内存管理方式提供了面向对象的特性,它是处理构造和析构、需要类型安全和异常处理的首选方案。而C语言的内存管理函数适用于简单的内存分配,例如分配原始内存块或复杂性较低的数据结构,没有构造和析构的要求。当从C迁移到C++,或在C++中使用C代码时,了解两种内存管理方式的差异非常重要。
339 26
|
10月前
|
Java
介绍String.format()方法中的格式占位符用法。
通过综合使用它们,可以在Java中构造非常具体和高度定制的输出格式。这对于输出报道、创建用户界面或者任何需要精确控制输出格式的场合都非常有用。记住,当使用格式化方法时,需要确保提供的输入参数与占位符类型匹配,否则会抛出 java.util.IllegalFormatException。
1154 0
|
11月前
|
C语言 C++
c与c++的内存管理
再比如还有这样的分组: 这种分组是最正确的给出内存四个分区名字:栈区、堆区、全局区(俗话也叫静态变量区)、代码区(也叫代码段)(代码段又分很多种,比如常量区)当然也会看到别的定义如:两者都正确,记那个都选,我选择的是第一个。再比如还有这样的分组: 这种分组是最正确的答案分别是 C C C A A A A A D A B。
193 1
|
存储 Linux C语言
C++/C的内存管理
本文主要讲解C++/C中的程序区域划分与内存管理方式。首先介绍程序区域,包括栈(存储局部变量等,向下增长)、堆(动态内存分配,向上分配)、数据段(存储静态和全局变量)及代码段(存放可执行代码)。接着探讨C++内存管理,new/delete操作符相比C语言的malloc/free更强大,支持对象构造与析构。还深入解析了new/delete的实现原理、定位new表达式以及二者与malloc/free的区别。最后附上一句鸡汤激励大家行动缓解焦虑。
|
存储 Java
课时4:对象内存分析
接下来对对象实例化操作展开初步分析。在整个课程学习中,对象使用环节往往是最棘手的问题所在。
136 4
|
存储 算法 Java
JVM: 内存、类与垃圾
分代收集算法将内存分为新生代和老年代,分别使用不同的垃圾回收算法。新生代对象使用复制算法,老年代对象使用标记-清除或标记-整理算法。
230 6
非静态内部类持有外部类引用导致内存溢出
非静态内部类持有外部类引用导致内存溢出
|
安全 C语言 C++
彻底摘明白 C++ 的动态内存分配原理
大家好,我是V哥。C++的动态内存分配允许程序在运行时请求和释放内存,主要通过`new`/`delete`(用于对象)及`malloc`/`calloc`/`realloc`/`free`(继承自C语言)实现。`new`分配并初始化对象内存,`delete`释放并调用析构函数;而`malloc`等函数仅处理裸内存,不涉及构造与析构。掌握这些可有效管理内存,避免泄漏和悬空指针问题。智能指针如`std::unique_ptr`和`std::shared_ptr`能自动管理内存,确保异常安全。关注威哥爱编程,了解更多全栈开发技巧。 先赞再看后评论,腰缠万贯财进门。
608 0

热门文章

最新文章