std::string

std::string 是 C++ 标准库中的字符串类,用于表示和操作文本字符串。它提供了丰富的成员函数,下面是一些常用的 std::string 操作:

1. 构造与初始化

  • string():创建一个空字符串。
  • string(const char* s):使用 C 字符串初始化 string 对象。
  • string(const string& str):拷贝构造函数,从另一个 string 对象复制。

2. 容量相关操作

  • size()length():返回字符串的长度(字符数)。
  • empty():判断字符串是否为空。
  • clear():清空字符串的内容。
  • resize(size_t n):调整字符串的大小为 n,可能会截断或填充字符。

3. 访问字符

  • operator[]:访问指定位置的字符(不进行边界检查)。
  • at(size_t pos):访问指定位置的字符(进行边界检查)。
  • front():返回字符串的第一个字符。
  • back():返回字符串的最后一个字符。
  • data():返回指向字符串数据的指针(C 风格字符串,末尾带有 '\0')。

4. 修改字符串

  • operator+=append(const string& str):在字符串末尾追加另一个字符串。
  • insert(size_t pos, const string& str):在指定位置插入字符串。
  • erase(size_t pos = 0, size_t len = npos):删除从指定位置开始的若干字符。
  • replace(size_t pos, size_t len, const string& str):用指定字符串替换某个范围的字符。
  • push_back(char c):在字符串末尾添加一个字符。
  • pop_back():移除字符串末尾的一个字符。

5. 字符串查找

  • find(const string& str, size_t pos = 0):查找子字符串 str,返回首次出现的位置,未找到返回 npos
  • rfind(const string& str, size_t pos = npos):从右向左查找子字符串 str,返回首次出现的位置,未找到返回 npos
  • find_first_of(const string& str, size_t pos = 0):查找 str 中任一字符首次出现在字符串中的位置。
  • find_last_of(const string& str, size_t pos = npos):查找 str 中任一字符最后出现在字符串中的位置。

6. 子字符串

  • substr(size_t pos = 0, size_t len = npos):返回从指定位置开始的子字符串,长度为 len

7. 比较

  • compare(const string& str):比较两个字符串,返回小于、等于或大于零的值,分别表示小于、等于或大于 str

8. 字符串转换

  • c_str():返回指向 C 风格字符串(const char*)的指针。
  • stoi()stod()stof() 等:将字符串转换为整数、浮点数等(这些是 C++11 引入的非成员函数)。

9. 输入输出

  • getline():从输入流读取一行到 string 对象。
  • operator>>:从输入流读取到 string,以空白字符为分隔符。
  • operator<<:将字符串输出到输出流。

10.迭代器类型

  • begin():返回指向字符串第一个字符的迭代器。
  • end():返回指向字符串末尾(即最后一个字符的下一个位置)的迭代器。
  • rbegin():返回指向字符串最后一个字符的反向迭代器。
  • rend():返回指向字符串第一个字符前的反向迭代器。

  • std::string::iterator:正向迭代器,用于从字符串的头部到尾部逐个访问字符。
  • std::string::const_iterator:常量正向迭代器,用于从头部到尾部逐个访问字符,但不能修改字符。
  • std::string::reverse_iterator:反向迭代器,用于从尾部到头部逐个访问字符。
  • std::string::const_reverse_iterator:常量反向迭代器,用于从尾部到头部逐个访问字符,

 

示例代码:

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello, World!";
    
    // 访问字符
    std::cout << "First character: " << str.front() << std::endl;
    std::cout << "Last character: " << str.back() << std::endl;
    
    // 查找子字符串
    size_t pos = str.find("World");
    if (pos != std::string::npos) {
        std::cout << "\"World\" found at position: " << pos << std::endl;
    }
    
    // 修改字符串
    str.replace(7, 5, "C++");
    std::cout << "Modified string: " << str << std::endl;
    
    // 插入和删除
    str.insert(5, " amazing");
    std::cout << "After insertion: " << str << std::endl;
    
    str.erase(5, 8);
    std::cout << "After erasing: " << str << std::endl;
    
    return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值