当前位置: 首页 > article >正文

C++中substr用法记录

在C++中,substr 是 std::string 类的一个成员函数,用于从一个字符串中提取子字符串。substr 函数的基本语法如下:

string substr(size_type pos = 0, size_type count = npos) const;

参数解释:

  1. pos

    • 类型:size_type(通常是 std::size_t
    • 含义:子字符串的起始位置。pos 是从 0 开始的索引。如果 pos 超过了字符串的长度,函数会抛出一个 std::out_of_range 异常。
  2. count

    • 类型:size_type
    • 含义:子字符串的长度。如果 count 超过了从 pos 开始的剩余字符数,子字符串将包含从 pos 开始的所有字符,直到字符串的末尾。

返回值:

  • 类型:std::string
  • 含义:返回一个包含了从 pos 开始的 count 个字符的子字符串。

使用示例:

  1. 提取从指定位置开始的子字符串

    #include <iostream>
    #include <string>
    
    int main() {
        std::string str = "Hello, World!";
        std::string sub = str.substr(7);  // 从索引 7 开始到末尾
        std::cout << sub << std::endl;    // 输出: World!
        return 0;
    }
    
  2. 提取指定长度的子字符串

    #include <iostream>
    #include <string>
    
    int main() {
        std::string str = "Hello, World!";
        std::string sub = str.substr(7, 5);  // 从索引 7 开始,提取 5 个字符
        std::cout << sub << std::endl;       // 输出: World
        return 0;
    }
    
  3. 提取从字符串末尾开始的子字符串

    #include <iostream>
    #include <string>
    
    int main() {
        std::string str = "Hello, World!";
        std::string sub = str.substr(str.size() - 6);  // 从倒数第 6 个字符开始到末尾
        std::cout << sub << std::endl;                // 输出: World!
        return 0;
    }
    
  4. 处理异常(如果起始位置超出字符串长度)

    #include <iostream>
    #include <string>
    
    int main() {
        std::string str = "Hello, World!";
        try {
            std::string sub = str.substr(20);  // 起始位置超出字符串长度
        } catch (const std::out_of_range& e) {
            std::cerr << "Out of range error: " << e.what() << std::endl;
        }
        return 0;
    }

http://www.kler.cn/news/329735.html

相关文章:

  • 开源链动2+1模式、AI智能名片与S2B2C商城小程序在精准选品与定位决策中的应用
  • 大数据毕业设计选题推荐-广东旅游数据分析系统-Hive-Hadoop-Spark
  • 问:JAVA中阻塞队列的概念、原理及使用场景?
  • springboot基于Vue的电影在线预定与管理系统
  • C0012.Clion改用VS编译器开发Qt界面
  • TCP的第三次握手没有回复,会出现哪些问题现象
  • Python | Leetcode Python题解之第448题找到所有数组中消失的数字
  • Go语言接口的基本概念
  • Qt-QTableWidget多元素控件(37)
  • element-ui 通过按钮式触发日期选择器
  • 【流计算】流计算概论
  • 如何安装和设置 Go 版本的 fabric AI 工作流框架?
  • MySQL基础篇 - 多表查询
  • Jmeter生成JWT token
  • 海外媒体投稿:如何运用3种国内外媒体套餐发稿突出重围?
  • 注册安全分析报告:人民卫生音像
  • profile-spec-ref元素
  • 【JavaEE】——线程池大总结
  • 代码随想录算法训练营DAY10之动态规划(二)背包问题
  • 什么是 Supply chain attack(供应链攻击)
  • 大数据毕业设计选题推荐-民族服饰数据分析系统-Python数据可视化-Hive-Hadoop-Spark
  • 针对考研的C语言学习(定制化快速掌握重点3)
  • 如何批量转换大模型训练数据集格式
  • 使用容器启动的zk无法暴露3888问题解决
  • 创建Vue项目的时出现:无法加载文件 E:\software\node\node_global\vue.ps1,因为在此系统上禁止运行脚本
  • Android SQLite的基本使用、生成Excel文件保存到本地
  • 6.MySQL基本查询
  • 50. GLTF格式简介 (Web3D领域JPG)
  • 0708-指针和字符数组(上)(下)
  • 【不看会后悔系列】排序之——文件归并【史上最全详解】~