首页 > 编程语言 > 详细

[知识点] 1.3.3 字符数组与 string

时间:2020-07-16 23:17:22      阅读:54      评论:0      收藏:0      [点我收藏+]

总目录 > 1 语言基础 > 1.3.3 字符数组与 string

前言

作为 C++ 的特性,OI 的几年里基本没有用过 string(字符串),因为觉得 char 数组(字符数组)实在很方便。。这里单独开一篇以进一步了解下字符数组与字符串的各种联系、差异与优劣。

子目录列表

1、字符数组

2、string 类

 

1.3.3 字符数组与 string

1、字符数组

① 概念

在 1.2 C++ 基础知识 中已经先后介绍了各种数据类型以及数组。那么在其中,比较特殊的一类数组就是 char 类型的数组。对于其他数据类型的数组,尽管它们被归类于一组,但其实元素之间依旧只存在一个逻辑地址上的关系,只是一串相邻的值;而 char 类型因为存储的是字符,如果将各个字符相连,正如将各个字母相连一样能够组成单词,就组成了一串字符,简称字符串

我们用单引号来表示字符,而双引号表示字符串,如下两种对字符数组的定义均是合法的:

char a[10] = {h, e, l, l, o};
char b[10] = "hello";

(但它们并不等价,字符串整体赋值时会自动在字符串末尾加上 ‘\0‘ 字符,该字符为结束符,表示一个字符串的结束;也就是说,b 的实际内容为 "hello/0",而 a 为 "hello")

在 C 语言中,只能通过 char 数组来实现字符串。这样的字符串,称之为 C 风格字符串

② 相关函数

> strlen(s) 返回字符串 s 的长度

> strcpy(s1, s2) 将字符串 s2 赋值给 s1

> strcat(s1, s2) 将字符串 s2 连接到 s1 末尾

> strcmp(s1, s2) 判断字符串 s1 和 s2 的字典序

关于字符串的字典序,请参见:<施工中>

还有 strchr, strstr... 其实除了第一条查询字符串长度函数外,其他函数都能比较轻松的手动实现,使用的也不多,了解即可。

 

2、string 类

stringC++ 标准库 <string> 中提供的一个,本质上是 std :: basic_string<char> 的简称,其作用就是实现字符串的功能。不同于 int, double, char 等,它们属于标准数据类型,C / C++ 通用,而 string 只是 C++ 标准库中的一个类,和其他 C++ 中的 STL 容器属于一种类型。

因为字符数组的特殊性,C++ 直接原生提供字符串 string,某种程度上解决了很多不便。相比 char 数组,string 的优势在于:

① 动态分配空间

② 可以重载运算符

③ 可以整体赋值

string 的实际操作更为便捷,由于可以直接赋值,所以不需要复制函数;连接字符串可以直接相加,比如 s = s1 + s2;求字符串 s 长度可以使用 s.size()

 

[知识点] 1.3.3 字符数组与 string

原文:https://www.cnblogs.com/jinkun113/p/13325451.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!