当前位置: 首页 > news >正文

C++基础了解-14-C++ 字符串

@C++ 字符串

一、C 风格字符串

C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

下面的声明和初始化创建了一个 RUNOOB 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 RUNOOB 的字符数多一个

char site[7] = {‘R’, ‘U’, ‘N’, ‘O’, ‘O’, ‘B’, ‘\0’};

依据数组初始化规则,可以把上面的语句写成以下语句:

char site[] = “RUNOOB”;

以下是 C/C++ 中定义的字符串的内存表示:
在这里插入图片描述
不需要把 null 字符放在字符串常量的末尾。C++ 编译器会在初始化数组时,自动把 \0 放在字符串的末尾。让我们尝试输出上面的字符串:

#include <iostream>using namespace std;int main ()
{char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};cout << "菜鸟教程: ";cout << site << endl;return 0;
}

菜鸟教程: RUNOOB

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

二、C++ 中的 String 类

C++ 标准库提供了 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.lryc.cn/news/34830.html

相关文章:

  • 浅谈几种网络攻击及攻防原理
  • Kafka消息中间件(Kafka与MQTT区别)
  • Go垃圾回收原理
  • Coredump-N: stack 空间被临时变量吃满,导致内存访问出现问题
  • GO中使用viper读取配置文件
  • webpack dll 提升构建速度
  • C++面向对象编程之三:初始化列表、类对象作为类成员、静态成员
  • 跨域问题解决方案
  • Vue3电商项目实战-购物车模块7【20-登录后-批量删除、21-登录后-选中状态修改数量、22-登录后-全选反选、23-登录后-修改规格、24-下单结算】
  • 软件测试之快速熟悉项目
  • 软考高级信息系统项目管理师系列之二十一:项目风险管理
  • 打包成JAR文件和WAR文件,到底有什么区别?
  • STM32 OTA应用开发——通过串口/RS485实现OTA升级(方式1)
  • 在教学中常被问到的几个vue3.x与typescript的问题,统一解答
  • 纯css实现超炫酷的星空背景按钮
  • openpnp - 贴片前, 放入一块新板子后, 对板子的坐标矫正
  • 计及需求响应的改进灰狼优化算法求解风、光、柴、储容量优化配置(Matlab代码实现)
  • Elasticsearch使用——高级篇
  • Java网络爬虫-HttpClient工具类
  • LeetCode203_203. 移除链表元素
  • 【洛谷 P1443】马的遍历 题解(广度优先搜索)
  • 为什么gpt输出有随机性?
  • 配置Clion用于STM23开发(Makefile)
  • 如何在 Istio 中使用 SkyWalking 进行分布式追踪
  • HBase高手之路1-Hbase简介
  • 计算机视觉手指甲标注案例
  • linux 字符串截取(cut)
  • 003+limou+HTML——(3)HTML列表
  • 设计模式---工厂模式
  • C++基础了解-13-C++ 数组