0%

cpp数据结构之string的常见用法

本文是关于c++中常用的数组string的一些常见用法的总结, 主要是一些常用的调用方法, 主要是我的平时的leetcode题解中经常会使用的.

字符串 string

字符串可以说是基本的数据类型, 也可以说是数据结构, 其本质是多个字符顺序组成的数据结构.

常见用法

首先导入标准库

1
#include<string>

初始化

1
2
3
4
5
6
string s;
string s = "hello world!";

cin >> s; // 写入s
getline(cin, s);

查询属性

  1. 字符串长度

    1
    s.size();

  2. 判断字符串是否为空

    1
    s.empty();

增删改查

  1. 增加元素

    1
    2
    3
    4
    5
    6
    7
    // 末尾添加
    s1 += "hhh" // 添加字符串
    s1 += 'g' // 添加字符
    s.push_back('a') // 该方法只能添加字符
    s.append(); // 方法很丰富, 可以自行查询
    // 插入
    s.insert(6, "hhh"); // 只支持插入字符串

  2. 删除元素

    1
    2
    3
    s.erase(6); // 索引6之后字符串都删除
    s.erase(4,6); // 索引4之后删除6个字符
    s.clear(); // 清空

  3. 修改元素

    1
    s.replace(1,2,"python"); // 索引1开始的2个字符串替换成python

  4. 查找元素

    1
    s[0]; // 直接去除第0个元素

其他

  1. 字符子串

    1
    s.substr(4,5); // 从索引4开始的5个字符

  2. 正则匹配 使用正则表达式进行一些处理, 相比于直接模拟较慢, 但是很方便. 有些大部分的内容和之前在linux中的正则很相似.

    1
    2
    3
    4
    5
    #include<regex>

    string s = "文本";
    regex s_reg("正则表达式");
    bool res = regex_match(s, s_reg);

  3. 字母大小写转换

    最近学到一个小知识, 利用位运算来将大小写字母进行转化.

    1
    2
    3
    4
    char ch = 'A';
    ch ^= 32; // 大小写相互转换;
    ch &= -32; // 转大写
    ch |= 32; // 转小写

  4. 字符按空格分割

    需要使用sstream库进行操作.

    1
    2
    3
    4
    5
    6
    #include<sstream>
    istringstream str1(s1); // 将s1转化为str1
    string out;
    while(str1 >> out){
    // 此处的out就是一个一个单词
    }

个人收获

字符串本质上和数组很相似, 有些处理的技巧也很相似, 多刷题, 多熟悉, 多总结!

------ 本文结束------