算法学习---字符串相关

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 类时,不需要手动管理内存,它会自动处理字符串的内存分配和释放,并提供了更方便和安全的字符串处理功能。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值