C++ string 字符串查找匹配实例代码

yizhihongxing

C++中的字符串是以string类来表示的,string类提供了多种方法来进行查找和匹配操作。

下面是一些常用的方法:

find()函数

find() 函数可以在字符串中查找子串,返回子串在字符串中的位置,如果没有找到,返回string::npos。

string str = "Hello World";
string subStr = "World";
size_t pos = str.find(subStr);
if (pos == string::npos) {
    std::cout << "Sub-string not found" << std::endl;
} else {
    std::cout << "Sub-string found at position: " << pos << std::endl;
}

输出:

Sub-string found at position: 6

rfind()函数

和find()函数相似,但是是从字符串尾部开始查找子串。

string str = "Hello World World";
string subStr = "World";
size_t pos = str.rfind(subStr);
if (pos == string::npos) {
    std::cout << "Sub-string not found" << std::endl;
} else {
    std::cout << "Sub-string found at position: " << pos << std::endl;
}

输出:

Sub-string found at position: 12

find_first_of()和find_last_of()函数

用于查找字符在字符串中第一次和最后一次出现的位置。

string str = "Hello World!";
size_t pos = str.find_first_of("aeiou");
if (pos == string::npos) {
    std::cout << "Vowel not found" << std::endl;
} else {
    std::cout << "Vowel found at position: " << pos << std::endl;
}

pos = str.find_last_of("aeiou");
if (pos == string::npos) {
    std::cout << "Vowel not found" << std::endl;
} else {
    std::cout << "Last vowel found at position: " << pos << std::endl;
}

输出:

Vowel found at position: 1
Last vowel found at position: 8

Example 1.

现在,假设我们需要实现一个简单的字符串匹配算法,用来查找一个字符串中是否包含另一个字符串。

bool contains(string str, string subStr) {
    return str.find(subStr) != string::npos;
}

这个函数会返回一个布尔值,如果子串存在于主字符串中,返回 true,否则返回 false。

Example 2.

在另一个示例中,我们需要编写一个函数,来将一个字符串中所有的子串替换成另一个字符串。

string replaceAll(string str, string oldStr, string newStr) {
    size_t pos = 0;
    while ((pos = str.find(oldStr, pos)) != string::npos) {
        str.replace(pos, oldStr.length(), newStr);
        pos += newStr.length(); // Move past the new string
    }
    return str;
}

该函数使用std::string::replace()函数来替换每个子串,每次替换前都要先查找它出现的位置。

以上就是C++字符串查找匹配的基础知识和两个实例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ string 字符串查找匹配实例代码 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • JavaScript构造函数与原型之间的联系

    当我们创建一个JavaScript对象时,我们可以使用构造函数或者对象字面量来定义它。构造函数是一个特殊的函数,它被用来创建对象并初始化其属性。在JavaScript中,每个对象都有一个原型对象。原型对象是一个共享的,由所有对象实例共享的对象,它定义了对象的基本属性和方法。 JavaScript构造函数与原型之间的联系是通过构造函数的prototype属性来…

    other 2023年6月26日
    00
  • word文档打开速度慢的几个原因和解决方法

    接下来我将详细讲解“word文档打开速度慢的几个原因和解决方法”的完整攻略,内容包含以下方面: 原因 在解决问题之前,首先需要了解一下它发生的原因,这样才能有针对性地解决问题。下面是word文档打开速度慢的几个原因: 1.文档过大 如果文档的大小超过几MB,那么打开文档的时间就会明显增加,尤其是对于低配置的计算机或者运行较慢的软件,打开时间甚至会超过几分钟。…

    other 2023年6月27日
    00
  • 关于JavaScript的单双引号嵌套问题

    关于JavaScript的单双引号嵌套问题攻略 在JavaScript中,字符串可以使用单引号(’)或双引号(\”)来表示。有时候,我们需要在字符串中嵌套引号,这就引发了单双引号嵌套的问题。本攻略将详细介绍如何正确处理这个问题,并提供两个示例说明。 1. 使用转义字符 一种解决单双引号嵌套问题的方法是使用转义字符(\)。转义字符可以将特殊字符转义为普通字符,…

    other 2023年7月28日
    00
  • C++基于socket UDP网络编程实现简单聊天室功能

    C++基于Socket UDP网络编程实现简单聊天室功能完整攻略 本文将为大家分享C++基于Socket UDP网络编程实现简单聊天室功能的完整攻略,涵盖环境搭建、UDP协议基础、聊天室实现等方面的内容。 环境搭建 在开始网络编程前,我们需要搭建基础的环境。具体步骤如下: 安装Visual Studio(根据自己的操作系统安装对应版本),并创建一个空项目。 …

    other 2023年6月26日
    00
  • 详解Python函数作用域的LEGB顺序

    详解Python函数作用域的LEGB顺序 在Python中,函数作用域是指变量的可见性和访问性。Python使用LEGB规则来确定变量的作用域,即Local(局部)、Enclosing(嵌套)、Global(全局)和Built-in(内置)的顺序。下面将详细解释每个作用域的含义和查找顺序。 Local(局部)作用域 局部作用域是指在函数内部定义的变量。这些变…

    other 2023年8月19日
    00
  • Word怎么设计简洁的日历年历?

    下面是“Word怎么设计简洁的日历年历”的完整攻略: 步骤1:打开Word软件,选择一个适合的模板或创建一个表格 在Word中,可以选择多种类型的模板来创建日历或年历。打开Word后,可以在文件新建窗口中搜索“日历”或“年历”,然后选择一个适合的模板。 如果没有合适的模板,可以创建一个表格来设计日历或年历。选择“插入”菜单中的“表格”选项,在弹出的下拉菜单中…

    other 2023年6月27日
    00
  • pycharm 设置项目的根目录教程

    PyCharm 是一款非常流行的 Python 集成开发环境(IDE),能够提供方便快捷的编程环境和强大的功能工具,同时支持多种操作系统和版本。其中,设置项目的根目录是一项非常重要的操作,可以决定项目文件的组织方式和路径,对于提高开发效率和管理项目非常有帮助。 下面是 PyCharm 设置项目的根目录教程的完整攻略: 1. 创建新项目并设置根目录 步骤: 在…

    other 2023年6月27日
    00
  • 说说前端开发中的seo

    说说前端开发中的 SEO 什么是 SEO SEO(Search Engine Optimization),搜索引擎优化。它是指通过改变网站内容以及在页面上增加关键字等优化措施,以增加自然搜索引擎(例如谷歌、百度)对网站的搜索排名,从而提高网站流量,最终目的是提升网站在自然搜索结果中的可见度。 前端开发在 SEO 中的作用 前端开发中的 HTML、CSS、Ja…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部