#285. 第八节 字符数组与字符串

第八节 字符数组与字符串

一、概述

字符串实际上是用null字符,即\0终止的一维字符数组。在C++中,有两种类型的字符串表示形式:

  • C-风格字符串,头文件<cstring>
  • C++引入的string类,头文件<string>

二、C风格字符串

1. 字符数组

2. 字符指针

三、C++引入的string类

C++标准库提供了string类类型。

四、字符数组与字符串的区别(string str; char ch[101];

1. 头文件

  • 字符数组常用头文件:#include<cstring>
  • 字符串常用头文件:#include<string>

2. 获取长度

int lenStr = str.size();  // 或者
int lenStr = str.length();
int lenChar = strlen(ch); // #include<cstring>

另外注意sizeof() 是给出操作数的字节形式的存储大小,不能代表长度。

3. 字符数组相关函数总结

C风格字符串函数

函数 全拼 头文件 功能 实例
memset memory set cstring 内存填充 memset (a, 'b', sizeof(a))
gets get string cstdio 得到字符数组,允许数组里有空格 gets(str)
puts put string 输出字符数组 puts (str)
atoi ascii to integer cstdlib 字符数组转数字 atoi(str)
strcat string catenate cstring 连接字符串 strcat(d,s);
strcpy string copy 复制字符串 strcpy(char* des ,const char* source)
memcpy memory copy 复制字节 memcpy(d,s,(strlen(s)+1));
strcmp string compare 比较字符串 strcmp(s1,s2);
strlen string length 计算字符串长度 strlen(str);
strstr string string 子串在母串的位置 strstr(s,sub);
strncpy stringn copy 求子串 strncpy(char d[], const chars[], int numchars);
strncat stringn catenate 结尾追加n个字符 strncat(char d[], const chars[], int numchars);

C++风格字符串函数

函数 全拼 头文件 功能 实例
empty empty string string 判断字符串是否空 s.empty()
getline 带空格的字符串输入 getline(cin,s)
size 求字符串长度 s.size()
insert 在母串某个位置插入子串 s.insert(pos,s2);
substr substring 求子串 s.substr(pos,len)
erase 删除特定长度字符s s.erase(pos,len)
find 查找子串的位置 s.find(sub)
replace 替换子串 s.replace(pos,len,news)
c_str C string 获取C风格的字符数组首地址指针 s.c_str()

4. 字符串(STL容器)相关函数总结

五、习题

  1. 设字符串S="Olympic",S的非空子串的数目是()。

{{ select(1) }}

  • 28
  • 29
  • 16
  • 17
  1. 原字符串中任意一段连续的字符组成的新字符串称为子串。则字符串“AAABBBCCC”共有()个不同的非空子串。

{{ select(2) }}

  • 3
  • 12
  • 36
  • 45
  1. 若串S="copyright",其子串的个数是()。

{{ select(3) }}

  • 72
  • 45
  • 46
  • 36
  1. 以下关于字符串的判定语句中,正确的是()。

{{ select(4) }}

  • 字符串是一种特殊的线性表
  • 串的长度必须大于零
  • 字符串不可以用数组来表示
  • 空格字符组成的串就是空串
  1. 要使用putchar函数实现向显示器输出字符“A”,则可以使用()。

{{ select(5) }}

  • putchar(65)
  • putchar(A)
  • putchar('\65')
  • putchar("A")