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

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日

相关文章

  • Android Binder进程间通信工具AIDL使用示例深入分析

    Android Binder进程间通信是Android系统中非常重要的一部分,AIDL是Android Interface Definition Language的缩写,是用来描述服务器进程和客户端进程之间通信接口的一种语言。本文将详细讲解如何使用AIDL实现进程间通信,并提供两个示例说明供读者参考。 一、AIDL概述 AIDL是Android系统中基于Bi…

    other 2023年6月27日
    00
  • 魔兽自定义mod制作全攻略第一期

    魔兽自定义mod制作全攻略第一期 1. 环境准备 1.1 安装Warcraft III游戏 首先,你需要安装Warcraft III游戏,并确保其可正常运行。 1.2 下载并安装World Editor World Editor是用于制作Warcraft III自定义地图和mod的工具,你需要下载并安装它。 1.3 下载并安装Jass NewGen Pack…

    other 2023年6月25日
    00
  • Android客户端实现注册、登录详解(1)

    我来为您讲解“Android客户端实现注册、登录详解(1)”的完整攻略: 标题 文章的题目为“Android客户端实现注册、登录详解(1)”,是一篇讲解在Android客户端实现注册和登录功能的教程文章。 概述 此文的主要目的是为了帮助Android开发者了解在Android客户端中如何实现注册和登录功能。讲解内容包括如何设计UI界面、如何与后台服务器进行交…

    other 2023年6月27日
    00
  • django 模型中的计算字段实例

    下面我给您详细讲解“Django 模型中的计算字段实例”的完整攻略。 什么是计算字段 计算字段在 Django 中称为【属性】属性。它是通过模型中定义的方法来计算的,而不是从数据库中检索。此外,在当您需要计算某个表的特定字段时,可以使用计算字段来完成。 假设我们有一个名为 Book 的模型,该模型具有标题、作者、出版社和价格等属性。 然后,我们还需要计算折扣…

    other 2023年6月26日
    00
  • 微信小程序page的生命周期和音频播放及监听实例详解

    下面我将详细讲解“微信小程序page的生命周期和音频播放及监听实例详解”的完整攻略。 微信小程序 page 的生命周期 微信小程序 page 是小程序的基本页面,具有生命周期,可以用于页面的初始化和页面的状态管理等。下面是小程序 page 的生命周期方法: onLoad(options)在页面加载时触发,options 是页面参数,可以通过 this.dat…

    other 2023年6月27日
    00
  • 记一次vnc远程连接linux问题解决记录(5900端口测试、kde桌…

    记一次VNC远程连接Linux问题解决记录(5900端口测试、KDE桌面环境) 背景 作为一名Linux爱好者,我经常会在家用VNC远程访问公司或家里的Linux机器。最近,我尝试远程连接一台安装KDE桌面环境的Linux机器,但是发现无法连接。在经过一番摸索之后,我找到了解决方法,现在将其分享给大家。 问题描述 我尝试使用VNC Viewer远程连接Lin…

    其他 2023年3月28日
    00
  • vue如何引入sass全局变量

    当使用Vue框架时,可以通过以下步骤引入Sass全局变量: 创建Sass全局变量文件:首先,在项目的根目录下创建一个名为variables.scss(或者其他你喜欢的名称)的文件。在这个文件中,你可以定义你想要的全局变量,例如颜色、字体大小等。示例代码如下: // variables.scss $primary-color: #ff0000; $font-s…

    other 2023年7月29日
    00
  • VS2012开启右键菜单创建单元测试选项(Create Unit Tests) 的方法

    下面是详细讲解“VS2012开启右键菜单创建单元测试选项(Create Unit Tests) 的方法”的完整攻略。 1. 打开VS2012,创建项目 首先,打开VS2012,创建一个C#项目,比如一个控制台应用程序。 2. 安装“Microsoft Unit Test Adapter” 在VS2012中,安装并启用“Microsoft Unit Test …

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部