1. 字符串的保存形式
(1) 字符数组---创建一个char型数组,用来存储字符串中的每一个字符。
(2) string类---由c++标准库提供的用于处理字符串的特殊类。
2. 字符数组
(1) 字符数组的定义
例如:char str[10];
(2)字符数组的初始化方式
例如: char str[6] = “hello"
char str[6] = {'h','e','l','l','o,'\0'}
由于字符数组需要以‘\0’来作为结束的提示符,所以一般来说定义字符数组长度时,需要 比字符串本身长度多申请一个数组空间,用于保存'\0'。
(3) 字符数组的输入
1) 不含空格输入 --- 可以采用循环与cin的方式进行输入
2) 含空格输入 --- 使用cin.getline(数组名,数组长度)的方式进行按行输入
(4) 字符数组的输出----使用循环+cout的方式进行输出
(5)常用函数 --- 需添加cstring的头文件
1) strlen --- 用于测量字符串长度
#include <cstring>
char str[] = "Hello";
int length = strlen(str); // 返回字符串的长度,结果为 5
2)strcpy --- 将一个字符串复制到另一个字符串
#include <cstring>
char source[] = "Hello";
char destination[10];
strcpy(destination, source); // 将 source 复制到 destination
3)strcat---将一个字符串追加到另一个字符串的末尾
#include <cstring>
char str1[] = "Hello";
char str2[] = " World";
strcat(str1, str2); // 将 str2 追加到 str1 的末尾
4) strcmp-- 比较两个字符串是否相等
#include <cstring>
char str1[] = "Hello";
char str2[] = "Hello";
int result = strcmp(str1, str2); // 比较 str1 和 str2 的内容,结果为 0(相等)
5) strncmp---比较两个字符串的前n个字符是否相等
#include <cstring>
char str1[] = "Hello";
char str2[] = "Help";
int result = strncmp(str1, str2, 3); // 比较 str1 和 str2 的前 3 个字符,结果为 0(相等)
6)strstr:在一个字符串中查找另一个字符串是否出现
#include <cstring>
char str[] = "Hello, World!";
char* found = strstr(str, "World"); // 在 str 中查找 "World" 的第一次出现
3. 字符串string类---注意要添加string的头文件
(1) 基本操作
1) 定义 string str1 = “abc”; //注意这里必须是双引号
2) 链接 str1 = str1 + str2 或者 str1 = str2 + str1
区别在于加号前面的字符串链接完后也会在新生成的字符串前面,有时可利用这个特性进行头插。
3) 判等与判断大小 str1 == str2 str1>str2
直接判断两个字符串是否相等也是string类数据提供的强大功能;判断大小是基于字典序进行判断的。二者的结果都会返回一个对应的布尔值。
(2) 常用函数
1) length()或者size()---返回字符串的长度
std::string str = "Hello";
int length = str.length(); // 返回字符串的长度,结果为 5
2)append()追加另一个字符串到末尾 (可以直接用+=来代替)
std::string str1 = "Hello";
std::string str2 = " World";
str1.append(str2); // 将 str2 追加到 str1 的末尾
// 或者使用 += 运算符
str1 += str2;
3) substr():返回一个子字符串,从指定位置到指定长度
std::string str = "Hello, World!";
std::string sub = str.substr(7, 5); // 返回从索引 7 开始长度为 5 的子字符串,结果为 "World"
4)find():在字符串中查找另一个字符串第一次出现的位置
std::string str = "Hello, World!";
size_t found = str.find("World"); // 在 str 中查找 "World" 的第一次出现位置
5)replace():替换字符串中的子字符串
std::string str = "Hello, World!";
str.replace(7, 5, "Everyone"); // 将索引 7 开始长度为 5 的子字符串替换为 "Everyone"
6)compare(): 比较两个字符串
std::string str1 = "Hello";
std::string str2 = "Hello";
int result = str1.compare(str2); // 比较 str1 和 str2 的内容,结果为 0(相等)
7) c_str(): 将string类转换为以NULL(/0)结尾的字符数组
std::string str = "Hello";
const char* cstr = str.c_str(); // 将 str 转换为以 null 结尾的字符数组
此外:在使用string
类时,不需要手动管理内存,它会自动处理字符串的内存分配和释放,并提供了更方便和安全的字符串处理功能。