C++重新入门-字符串

C++ 提供了以下两种类型的字符串表示形式:

  1. C 风格字符串
  2. C++ 引入的 string 类类型

1.C 风格字符串

C 风格字符串是使用字符数组来表示的,以空字符 \0 结尾。它们通常被称为 "C-style strings"。例如:

char str[] = "Hello"; // 字符数组,以空字符 \0 结尾

实际上,等价于:

char str[]={'H','e','l','l','o','\0'};

(图片来自 https://www.runoob.com/cplusplus/cpp-strings.html)

 C 风格字符串使用字符数组存储字符串内容,因此您可以使用指针来访问它们。通常情况下,C 风格字符串与指向其第一个字符的指针相同。

举例来说,假设有以下C风格字符串:

char str[] = "Hello";

这个字符串实际上是一个包含了字符 'H', 'e', 'l', 'l', 'o', '\0' 的字符数组。因此,str 实际上就是一个指向这个字符数组的指针,也就是指向字符串第一个字符 'H' 的指针。

char* ptr = str; // ptr 指向字符串的第一个字符 'H'

 这也意味着,ptrstr 是等价的,它们都可以用来访问同一个字符串。

 C++ 中有大量的函数用来操作以 null 结尾的字符串:

例子:

#include <iostream>
#include <cstring>using namespace std;int main ()
{char str1[13] = "runoob";char str2[13] = "google";char str3[13];int  len ;// 复制 str1 到 str3strcpy( str3, str1);cout << "strcpy( str3, str1) : " << str3 << endl;// 连接 str1 和 str2strcat( str1, str2);cout << "strcat( str1, str2): " << str1 << endl;// 连接后,str1 的总长度len = strlen(str1);cout << "strlen(str1) : " << len << endl;return 0;
}

 当上面的代码被编译和执行时,它会产生下列结果

strcpy( str3, str1) : runoob
strcat( str1, str2): runoobgoogle
strlen(str1) : 12

 2.C++中的String类 

C++ 标准库提供了 string 类类型,支持上述所有的操作,另外还增加了其他更多的功能。string类是用于处理字符串的标准库类之一。它位于命名空间std中,并且在头文件<string>中声明。string类提供了一种更方便、更安全的方式来处理字符串,相比于C风格的字符串处理函数,它具有更多的功能和更强的类型安全性。现在让我们先来看看下面这个实例:

现在您可能还无法透彻地理解这个实例,因为到目前为止我们还没有讨论类和对象。所以现在您可以只是粗略地看下这个实例,等理解了面向对象的概念之后再回头来理解这个实例。

#include <iostream>
#include <string>using namespace std;int main ()
{string str1 = "runoob";string str2 = "google";string str3;int  len ;// 复制 str1 到 str3str3 = str1;cout << "str3 : " << str3 << endl;// 连接 str1 和 str2str3 = str1 + str2;cout << "str1 + str2 : " << str3 << endl;// 连接后,str3 的总长度len = str3.size();cout << "str3.size() :  " << len << endl;return 0;
}

 当上面的代码被编译和执行时,它会产生下列结果:

str3 : runoob
str1 + str2 : runoobgoogle
str3.size() :  12

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/680643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt4版本的信号槽写法

​​​​​​ connect(teacher,SIGNAL(hungry(QString)),student,SLOT(treat(QString))); 这里使用了SIGNAL和SLOT这两个宏&#xff0c;宏的参数是信号函数和槽函数的函数原型。 因为直接填入了函数原型&#xff0c;所有这里边编译不会出现因为重载导致的函数指针二义性的问…

CSC8014: Software Development – Advanced Techniques 第二周

2.3 Introduction to the Collections Framework The Collections Framework • A unified, generic framework for the representation and manipulation of groups of objects –Manipulation is independent of representation • Includes: –Interfaces that define typ…

QT 信号和槽的拓展

​​​​​​ 一个信号可以和多个槽相连 如果是这种情况&#xff0c;这些槽会一个接一个的被调用&#xff0c;但是槽函数调用顺序是不确定的。像上面的例子&#xff0c;可以将一个按钮点击信号连接到关闭窗口的槽函数&#xff0c;同时也连接到学生请吃饭的槽函数&#xff0c;…

服务降级(Sentinel)

服务降级 采用 @SentinelResource 注解方式实现, 必要的 依赖必须引入 以及 切面Bean 接口代码 @RequestMapping("/degrade")@SentinelResource(value = DEGRADE_RESOURCE_NAME, blockHandler = "blockHandlerForDegrade",entryType = EntryType.IN)pub…

模拟-替换数字

替换数字 题目链接 #include<iostream> #include<string.h>using namespace std;int main(){string str;string ans;cin>>str;for(int i 0;i<str.length();i){if(str[i] >48 && str[i] < 57){ans "number";}else{ans str[i]…

大模型参数高效微调(PEFT)知识

什么是微调&#xff1f;如何进行微调&#xff1f; 微调&#xff08;Fine-tuning&#xff09;是一种迁移学习的技术&#xff0c;用于在一个已经预训练好的模型基础上&#xff0c;通过进一步训练来适应特定的任务或数据集。微调可以在具有相似特征的任务之间共享知识&#xff0c…

数据库的使用方法

sqlite3 API&#xff1a; 头文件&#xff1a; #include <sqlite3.h> 编译时候要加上-lsqlite3 gcc a.c -lsqlite3 1&#xff09;sqlite3_open int sqlite3_open(const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db …

LeetCode--代码详解 7.整数反转

7.整数反转 题目 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 示例 …

Unreal Engine中PlayerController的常用方法和属性

在Unreal Engine中&#xff0c;PlayerController是负责处理玩家输入、视角控制以及与游戏世界交互的重要组件。本文将总结一些PlayerController的常用方法和属性&#xff0c;帮助开发者更好地理解和使用这一关键的类。 常用方法&#xff1a; InputAxis 和 InputAction&#xf…

openJudge | 统计字符数 C语言

总时间限制: 1000ms 内存限制: 65536kB 描述 判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多 输入 第1行是测试数据的组数n&#xff0c;每组测试数据占1行&#xff0c;是一个由a-z这26个字符组成的字符串 每组测试数据之间有一个空行&#xff0c;每行数据不…

(三十五)大数据实战——Superset可视化平台搭建

前言 本节内容是关于Apache Superset可视化平台的搭建&#xff0c;Apache Superset是一个现代的数据探索和可视化平台 。它功能强大且十分易用&#xff0c;可对接各种数据源&#xff0c;包括很多现代的大数据分析引擎&#xff0c;拥有丰富的图表展示形式&#xff0c;并且支持自…

课程大纲:图像处理中的矩阵计算

课程名称&#xff1a;《图像处理中的矩阵计算》 课程简介&#xff1a; 图像处理中的矩阵计算是图像分析与处理的核心部分。本课程旨在教授学员如何应用线性代数中的矩阵计算&#xff0c;以实现各种图像处理技术。我们将通过强调实际应用和实践活动来确保学员能够理解和掌握这些…

fatal error: rtiostream_utils.h: No such file or directory, rtiostream.h

fatal error: rtiostream_utils.h: No such file or directory 我的设置&#xff1a;

C++ //练习 6.23 参考本节介绍的几个print函数,根据理解编写你自己的版本。依次调用每个函数使其输入下面定义的i和j

C Primer&#xff08;第5版&#xff09; 练习 6.23 练习 6.23 参考本节介绍的几个print函数&#xff0c;根据理解编写你自己的版本。依次调用每个函数使其输入下面定义的i和j&#xff1a; int i 0, j[2] {0, 1};环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff…

UE5 播放本地MP3、MP4

1.创建一个媒体播放器 2.如创建视频&#xff0c;勾选。 它会多一个媒体纹理给你 3.1 设置音频 在一个actor上添加“媒体音频组件” “音频媒体播放器”赋值给它 3.2播放音频 添加一个音频媒体播放器变量&#xff0c; 赋值 地址使用绝对地址 4.1设置视频 UI上创建一个imag…

Redis -- 安装客户端redis-plus-plus

目录 访问reids客户端github链接 安装git 如何安装&#xff1f; 下载/编译、安装客户端 安装过程中可能遇到的问题 访问reids客户端github链接 GitHub - sewenew/redis-plus-plus: Redis client written in CRedis client written in C. Contribute to sewenew/redis-p…

qss的使用

参考&#xff1a;qss样式表笔记大全(二)&#xff1a;可设置样式的窗口部件列表&#xff08;上&#xff09;&#xff08;持续更新示例&#xff09;_51CTO博客_qss样式

Spring Boot 2.x集成WebSocket

Spring Boot 2.x集成WebSocket详解 websocket的接入是非常简单的&#xff0c;就是可能会遇到起不来或者调不通的问题&#xff0c;大部分是因为jar包冲突&#xff0c;可以根据自己碰到的不同问题针对解决。 一、准备工作 引入spring-boot-starter-websocket依赖包配置支持Ser…

【算法设计与分析】有效的字母异位词

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次…

适配器模式:接口转换的艺术,让不匹配成为过去式

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过将一个类的接口转换成客户期望的另一个接口&#xff0c;使得原本接口不兼容的类可以一起工作。在Java中&#xff0c;适配器模式可以通过实现一个适配器类来实现两个不兼容接口之间的转…