c++ string字符串关键字一网打尽(关键字+举例)

1. 构造函数

  • std::string(): 创建一个空字符串。
    std::string s1; // 空字符串 
  • std::string(const char* s): 使用 C 风格的字符串初始化 std::string 对象。
    std::string s2("Hello"); // 创建 "Hello"
  • std::string(size_t n, char c): 创建一个包含 n 个字符 c 的字符串。
    std::string s3(5, 'a'); // 创建 "aaaaa"
    

2. 容量与大小

  • size(): 返回字符串的长度(字符数)。

    size_t len = s.size(); // s = "Hello",返回 5

  • length(): 返回字符串的长度(与 size() 等价)。
    size_t len = s.length(); // s = "Hello",返回 5
    
  • empty(): 判断字符串是否为空。

    bool isEmpty = s.empty(); // s = "Hello",返回 false

  • capacity(): 返回字符串在不重新分配内存的情况下可以存储的字符数。

    size_t cap = s.capacity(); // 返回容量值

  • resize(size_t n): 将字符串大小调整为 n,多出的部分填充空字符。

    s.resize(10); // s = "Hello",调整为 "Hello   "

  • clear(): 清空字符串。

    s.clear(); // s 变为空字符串 ""

3. 访问字符

  • operator[]: 使用索引访问字符串中的字符。

    char first = s[0]; // s = "Hello",返回 'H'

  • at(size_t pos): 访问指定位置的字符,带有越界检查。

    char last = s.at(4); // s = "Hello",返回 'o'

  • front(): 返回字符串的第一个字符。

    char front = s.front(); // s = "Hello",返回 'H'

  • back(): 返回字符串的最后一个字符。

    char back = s.back(); // s = "Hello",返回 'o'

4. 修改字符串

  • append(const std::string& str): 在字符串末尾追加另一个字符串。

    s.append(" World"); // s = "Hello",变为 "Hello World"

  • push_back(char c): 在字符串末尾追加一个字符。

    s.push_back('!'); // s = "Hello World",变为 "Hello World!"

  • insert(size_t pos, const std::string& str): 在指定位置插入一个字符串。

    s.insert(5, ","); // s = "Hello World",变为 "Hello, World!"

  • erase(size_t pos = 0, size_t len = npos): 删除从指定位置开始的 len 个字符。
    s.erase(5, 1); // s = "Hello, World!",变回 "Hello World!" 
  • replace(size_t pos, size_t len, const std::string& str): 用指定字符串替换从 pos 开始的 len 个字符。

    s.replace(6, 5, "Universe"); // s = "Hello World",变为 "Hello Universe!"

  • pop_back(): 删除字符串的最后一个字符。

    s.pop_back(); // s = "Hello Universe!",变为 "Hello Universe"

5. 查找

  • find(const std::string& str, size_t pos = 0): 查找子字符串第一次出现的位置。

    size_t pos1 = s.find("World"); // s = "Hello World",返回 6

  • rfind(const std::string& str, size_t pos = npos): 查找子字符串最后一次出现的位置。

    size_t pos2 = s.rfind("l"); // s = "Hello World",返回 9

  • find_first_of(const std::string& str, size_t pos = 0): 查找字符串中任何一个字符第一次出现的位置。

    size_t pos3 = s.find_first_of("aeiou"); // s = "Hello World",返回 1 ('e')

  • find_last_of(const std::string& str, size_t pos = npos): 查找字符串中任何一个字符最后一次出现的位置。

    size_t pos4 = s.find_last_of("aeiou"); // s = "Hello World",返回 7 ('o')

  • find_first_not_of(const std::string& str, size_t pos = 0): 查找第一个不在给定字符串中的字符。

    size_t pos5 = s.find_first_not_of("Helo "); // s = "Hello World",返回 6 ('W')

  • find_last_not_of(const std::string& str, size_t pos = npos): 查找最后一个不在给定字符串中的字符。

    size_t pos6 = s.find_last_not_of("drlWo"); // s = "Hello World",返回 4 ('o')

6. 子字符串

  • substr(size_t pos = 0, size_t len = npos): 返回从指定位置开始的子字符串(提取功能)。

    std::string sub = s.substr(6, 5); // s = "Hello World",返回 "World"

7. 比较

  • compare(const std::string& str): 按字典顺序比较两个字符串。

    int cmp = s1.compare(s2); // s1 = "Apple", s2 = "Banana",返回负数,在字典顺序比较时,首先比较 s1s2 的第一个字符。字符 A (在 s1 中) 的 ASCII 值是 65,而字符 B (在 s2 中) 的 ASCII 值是 66。因为 65 < 66,s1 小于 s2,所以 compare 返回负数。

  • operator==, operator!=, operator<, operator<=, operator>, operator>=: 比较字符串相等或大小。

    bool equal = (s1 == s2); // s1 = "Apple", s2 = "Banana",返回 false bool lessThan = (s1 < s2); // s1 = "Apple", s2 = "Banana",返回 true

8. 转换

  • c_str(): 返回 C 风格的字符串(const char*)。
    const char* cstr = s.c_str(); // s = "Hello",返回 "Hello"
    
  • data(): 返回字符数组指针(非空终止)。

    const char* data = s.data(); // s = "Hello",返回 "Hello"  

9. 输入输出

  • operator>>: 从输入流读取字符串。

    std::cin >> s; // 读取输入

  • operator<<: 将字符串写入输出流。

    std::cout << s << std::endl; // 输出字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值