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日

相关文章

  • vue 组件中slot插口的具体用法

    当然!下面是关于\”Vue组件中slot插槽的具体用法\”的完整攻略,包含两个示例说明。 … … … … 示例1:默认插槽 <template> <div> <h1>父组件</h1> <slot></slot> </div> </template>…

    other 2023年8月20日
    00
  • 神盾加密解密教程(一)PHP变量可用字符

    神盾加密解密教程(一)PHP变量可用字符 简介 在PHP编程中,变量是存储数据的容器。在使用变量时,需要注意变量名的命名规则和可用字符。本教程将详细讲解PHP变量可用字符的规定。 可用字符规定 PHP变量名可以包含字母、数字和下划线(_),并且必须以字母或下划线开头。变量名对大小写敏感,即$myVar和$myvar是两个不同的变量。 以下是PHP变量名可用字…

    other 2023年8月9日
    00
  • iOS 把图片保存到相册,并获取图片文件名的实例

    现在我来为您讲解一篇完整的攻略,如何在iOS中把图片保存到相册,并获取图片文件名。 步骤1:导入相册库 首先,我们需要导入Photos框架来操作相册库。在你的ViewController文件中添加如下导入语句: import Photos 步骤2:保存图片到相册 接下来,我们需要使用PHPhotoLibrary类来保存图片到相册。具体的操作步骤如下: fun…

    other 2023年6月26日
    00
  • Android使用广播(BroadCast)实现强制下线的方法

    Android使用广播(Broadcast)实现强制下线的方法攻略 在Android开发中,我们可以使用广播(Broadcast)来实现强制下线的功能。下面是一个详细的攻略,包含了两个示例说明。 步骤一:创建广播接收器 首先,我们需要创建一个广播接收器(Broadcast Receiver),用于接收发送的广播消息。在这个接收器中,我们可以定义需要执行的操作…

    other 2023年9月7日
    00
  • visualsvn-server安装以及使用教程

    VisualSVN Server安装以及使用教程 简介 VisualSVN Server 是一个免费的 Subversion 服务器,可以在 Windows 环境下快速地建立和部署 Subversion 服务,可以为不同的项目提供一个稳定的版本管理平台。 安装步骤 下载 VisualSVN Server 打开 VisualSVN Server 官方网站 (h…

    其他 2023年3月29日
    00
  • Android Fragment 基本了解(图文介绍)

    Android Fragment 基本了解(图文介绍) 什么是 Fragment? Fragment 是一种 UI 组件,可以像 Activity 一样具有用户界面,并且可以在 Activity 中组合使用多个 Fragment 以构建复杂的用户界面。 Fragment 的使用场景 Fragment 的使用场景主要涉及以下几种情况: 在大屏幕设备(比如平板电…

    other 2023年6月27日
    00
  • Spring Batch入门教程篇

    Spring Batch入门教程篇 1. 什么是Spring Batch Spring Batch是一个用于大规模批处理应用程序开发的框架。它提供了一种简单、灵活和强大的方式来处理大量数据,并且具备事务管理、可靠性和容错性等特性。 2. 准备工作 在开始使用Spring Batch之前,我们需要准备以下环境:- Java开发环境- Maven构建工具- Sp…

    other 2023年6月28日
    00
  • Arclive 街机对战平台(单独ROMS下载) 备用下载地址

    Arclive 街机对战平台(单独ROMS下载) 备用下载地址攻略 Arclive 街机对战平台是一个提供街机游戏对战的平台,它允许玩家下载并玩各种经典的街机游戏。以下是详细的攻略,包括如何下载和安装 Arclive 街机对战平台以及如何获取单独的 ROMS 下载地址。 步骤 1:下载和安装 Arclive 街机对战平台 首先,打开您的网络浏览器,并访问 A…

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