• 【String——简单使用】


    String

    string 是 C++ STL 中字符串操作的重要类,它封装了许多字符串操作函数,方便对字符串进行处理。下面介绍一下 string 相关的知识点和函数。

    1. 字符串定义和初始化

    C++ 中可以使用 char 数组或 string 来表示字符串。char 数组是一种静态数组,需要指定长度,而 string 可以自动调整大小。string 类型需要包含头文件 #include 。

    string 类型的变量可以通过以下方式进行初始化:

    string s1;             // 空字符串
    string s2 = "hello";   // 由字符串字面值初始化
    string s3 = s2;        // 由另一个字符串 s2 初始化
    string s4(10, 'c');    // 由 n 个字符 c 构成的字符串
    string s5{"hello"};    // C++11 标准引入的新语法
    string s6 = {'h', 'e', 'l', 'l', 'o'};  // 由字符列表初始化,C++11 标准引入的新语法
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 字符串基本操作

    2.1 访问单个字符

    可以使用数组下标或 at() 函数访问字符串中的单个字符。at() 函数会检查索引是否越界,如果越界则抛出异常。

    string s = "hello";
    char ch = s[1];          // 访问第二个字符
    ch = s.at(3);            // 访问第四个字符
    
    • 1
    • 2
    • 3

    2.2 修改字符串内容

    可以使用数组下标或 at() 函数修改字符串中的单个字符,也可以使用赋值运算符和 assign() 函数修改整个字符串。另外,还可以使用 insert()、erase() 和 replace() 函数对字符串进行插入、删除和替换操作。

    string s = "hello";
    s[1] = 'a';              // 将第二个字符改为 a
    s.at(3) = 'o';           // 将第四个字符改为 o
    s = "world";             // 用字符串 "world" 重载 s
    s.assign(10, 'c');       // 将 s 中的所有字符改为 c,总共有 10 个
    s.insert(2, "123");      // 在 s 的第三个位置插入字符串 "123"
    s.erase(1, 2);           // 删除 s 的第二三个字符
    s.replace(4, 2, "123");  // 将 s 中从第五个位置开始的两个字符替换成字符串 "123"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.3 字符串查找和比较

    可以使用 find()、rfind()、find_first_of()、find_last_of()、find_first_not_of() 和 find_last_not_of() 等函数在字符串中查找子串或字符,并返回其位置。另外,还可以使用 compare() 函数比较两个字符串的大小关系。

    string s = "hello world";
    size_t pos = s.find("world");           // 查找字符串 "world",返回其起始位置
    pos = s.rfind("l");                     // 从后往前查找字符 'l',返回其起始位置
    pos = s.find_first_of("aeiou");         // 查找第一个元音字母,返回其起始位置
    pos = s.find_last_of("0123456789");     // 从后往前查找数字,返回其位置
    pos = s.find_first_not_of("helo wrd");  // 查找第一个不在指定集合中的字符,返回其位置
    pos = s.find_last_not_of("dlrow olleh");// 从后往前查找第一个不在指定集合中的字符,返回其位置
    int cmp = s.compare("hello world");     // 比较字符串是否相等,相等返回 0,小于则返回负数,大于则返回正数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. 常用字符串函数

    除了上面介绍的基本操作之外,string 类中还提供了许多其他的常用函数,比如 length()、size()、empty()、substr()、c_str() 等等。下面简单介绍一下这些函数。

    3.1 length() 和 size()

    length() 函数和 size() 函数都可以返回字符串的长度(即字符个数)。

    string s = "hello";
    int len = s.length();       // 获取字符串长度
    len = s.size();             // 同上,两者等价
    
    • 1
    • 2
    • 3

    3.2 empty()

    empty() 函数判断字符串是否为空。

    string s = "hello";
    bool flag = s.empty();      // 判断字符串是否为空,返回 false
    s = "";
    flag = s.empty();           // 判断字符串是否为空,返回 true
    
    • 1
    • 2
    • 3
    • 4

    3.3 substr()

    substr() 函数可以截取字符串的一部分并返回。

    string s = "hello world";
    string sub = s.substr(6, 5);    // 截取从第七个字符开始的长度为 5 的子串,即 "world"
    
    • 1
    • 2

    3.4 c_str()

    c_str() 函数返回一个指向以空字符结束的字符数组的指针,它用于将 string 类型转换为 char* 类型的字符串。

    string s = "hello";
    const char* str = s.c_str();   // 获取 char* 类型的字符串,即 "hello"
    
    • 1
    • 2

    4.字符与整形之间相互转换

    4.1 char 类型转 int 类型

    char 类型的变量本质上就是一个 ASCII 码值,因此可以通过将其强制类型转换为 int 类型来转换成整数。

    char ch = '5';
    int num = ch - '0';   // 将字符 '5' 转换成整数 5
    
    • 1
    • 2

    上面的代码中,将字符 ‘5’ 减去字符 ‘0’ 的 ASCII 码值,得到的就是整数 5。

    4.2 int 类型转 char 类型

    将一个整数转换为对应的字符,可以使用强制类型转换或者字符字面值的形式。

    int num = 5;
    char ch = static_cast<char>(num + '0');  // 将数字 5 转换成字符 '5'
    ch = num + '0';                          // 同上,使用字符字面值的形式
    
    • 1
    • 2
    • 3

    注意,在将数字转换为字符时,需要加上字符 ‘0’ 的 ASCII 码值。因为在 ASCII 码表中,数字字符 ‘0’ 的编码为 48,而数字字符 ‘1’、‘2’、‘3’、…、‘9’ 的编码分别为 49、50、51、…、57。

    另外,如果要将一个超过了可表示范围的整数转换为字符,结果是未定义的,可能会出现不可预测的错误。

    4.3 stringstream 类型转换

    除了上面介绍的方法之外,还可以使用 C++ STL 中的 stringstream 类型来进行字符和整型之间的转换。stringstream 类型用于在字符串流中读取、写入数据,它可以自动转换各种基本类型的数据。

    #include 
    using namespace std;
    
    int num = 123;
    stringstream ss;
    ss << num;       // 将整数 num 写入 stringstream 对象 ss 中
    string str;
    ss >> str;       // 从 ss 中读取字符串,并将其存储到变量 str 中
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在代码执行完第 3 行后,ss 中就包含了整数 123 对应的字符串 “123”。第 5 行中,通过输入运算符 >> 把这个字符串读取到了变量 str 中。

    类似地,还可以使用 stringstream 对象从字符串中读取整数,具体示例如下:

    #include 
    using namespace std;
    
    string str = "456";
    stringstream ss(str);
    int num;
    ss >> num;       // 从 ss 中读取字符串 "456",并将其解析成整数,存储到变量 num 中
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这样,num 就等于整数 456 了。

    以上是 char 和 int 类型相互转换的一些方法,掌握了这些方法,可以更加灵活地处理字符和整数之间的关系。

  • 相关阅读:
    干货|小白也能自制电子相册赶紧码住~
    分布式一致性算法
    1075 PAT Judge
    Pytorch:BatchNorm1d、BatchNorm2d、BatchNorm3d
    艾美捷内毒素纯化树脂说明书
    基于SpringBoot+Vue+uniapp的点餐平台系统(源码+lw+部署文档+讲解等)
    Java Thread sleep(),wait()方法的不同之处简介说明
    解读人工智能的理论基石
    循环神经网络--01 序列模型
    SpringBoot+Vue项目在线学生请假管理系统
  • 原文地址:https://blog.csdn.net/muzillll/article/details/130909399