使用C++打印出给定字符串中作为子字符串出现的给定数组中的所有字符串
在编程世界中,有很多场景我们确实希望在较大的文本中寻找特定的模式。一项常见任务是查找并打印给定数组中作为给定字符串中的子字符串出现的每个字符串。这个看似基本的问题可以利用各种方法来解决,在本文中,我们将探讨其中的两种方法。我们将对每种方法所使用的语法和算法进行明确的说明,并提供两个完整的可执行代码示例。
语法
在我们介绍这些方法之前,让我们首先了解我们将用来解决这个问题的语法 -
void printMatchingStrings(string array[], string text);
算法
为了解决从数组中查找并打印给定字符串中作为子字符串出现的所有字符串的问题,我们可以遵循以下分步算法 -
初始化一个空向量来存储匹配的字符串。
在数组中重复每个字符串。
检查当前字符串是否是给定文本的子字符串。
假设是,将字符串添加到匹配字符串的向量中。
在遍历所有字符串后,打印匹配字符串的向量。
方法一:使用 string.find() 函数
在此技术中,我们将使用 string.find() 函数,该函数返回字符串中子字符串的位置。如果没有找到子字符串,它会返回一个名为 string::npos 的特殊值。
示例
#include <iostream> #include <vector> #include <string> void printMatchingStrings(const std::string array[], const std::string& text, int arraySize) { std::vector<std::string> matchingStrings; for (int i = 0; i < arraySize; i++) { if (text.find(array[i]) != std::string::npos) { matchingStrings.push_back(array[i]); } } for (const std::string& match : matchingStrings) { std::cout << match << std::endl; } } int main() { const std::string array[] = { "apple", "banana", "orange", "pear" }; const std::string text = "I like to eat bananas and oranges."; int arraySize = sizeof(array) / sizeof(array[0]); printMatchingStrings(array, text, arraySize); return 0; }
输出
banana orange
方法 2:使用正则表达式
正则表达式为字符串中的模式匹配提供了强大的工具。我们也可以利用它们来解决我们的问题。
示例
#include <iostream> #include <vector> #include <string> #include <regex> void printMatchingStrings(const std::string array[], const std::string& text, int arraySize) { std::vector<std::string> matchingStrings; for (int i = 0; i < arraySize; i++) { std::regex pattern(array[i]); if (std::regex_search(text, pattern)) { matchingStrings.push_back(array[i]); } } for (const std::string& match : matchingStrings) { std::cout << match << std::endl; } } int main() { const std::string array[] = { "apple", "banana", "orange", "pear" }; const std::string text = "I like to eat bananas and pear."; int arraySize = sizeof(array) / sizeof(array[0]); printMatchingStrings(array, text, arraySize); return 0; }
输出
banana pear
选择正确的方法
选择两种方法之间取决于您特定问题的要求−
使用 string.find() 方法,如果
需要匹配的模式比较简单。
性能是一个问题,因为对于简单模式, string.find() 方法可能比正则表达式更快。
您更喜欢更简单的实现,而不需要正则表达式语法。
使用正则表达式方法 if
要匹配的模式很复杂,需要高级的模式匹配功能。
灵活性和强大的模式匹配在重要。
性能不是关键因素,或者模式的复杂性证明使用正则表达式是合理的。
结论
在本文中,我们探讨了两种独特的方法来处理在给定字符串中查找和打印出出现为数组中子字符串的问题。主要的方法使用了string.find()函数,这是一种简单直接的解决方案。后续的方法利用了正则表达式的强大功能来处理更复杂的模式匹配情况。根据您特定问题的需求,您可以选择最合适的方法。请记住,模式匹配是编程中的基本任务,对各种方法和策略有强大的理解能够显着提升您的问题解决能力。所以下次遇到类似的问题时,您将有足够的知识来有效地处理它。
以上是使用C++打印出给定字符串中作为子字符串出现的给定数组中的所有字符串的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如果在打开一份需要打印的文件时,在打印预览里我们会发现表格框线不知为什么消失不见了,遇到这样的情况,我们就要及时进行处理,如果你的打印文件里也出现了此类的问题,那么就和小编一起来学习下边的课程吧:excel打印表格框线消失怎么办?1、打开一份需要打印的文件,如下图所示。 2、选中所有需要的内容区域,如下图所示。 3、单击鼠标右键,选择“设置单元格格式”选项,如下图所示。 4、点击窗口上方的“边框”选项,如下图所示。 5、在左侧的线条样式中选择细实线图样,如下图所示。 6、选择“外边框”

本文将介绍如何解决在MicrosoftWord中出现的内存或磁盘空间不足以重新分页或打印文档的问题。这种错误通常会在用户尝试打印Word文档时出现。如果您遇到类似的错误,请参考本文提供的建议进行解决。内存或磁盘空间不足,无法重新分页或打印此文档Word错误解决MicrosoftWord打印错误“没有足够内存或磁盘空间重新分页或打印文档”的方法。更新MicrosoftOffice关闭占用内存的应用程序更改您的默认打印机在安全模式下启动Word重命名NorMal.dotm文件将Word文件保存为另一

在这个数字化的世界中,打印页面的需求并没有消失。尽管您可能认为在计算机上保存内容并直接发送到打印机更为便捷,但是您同样可以在iPhone上完成相同的操作。通过iPhone的相机,您可以拍摄照片或文档,并且还可以直接存储文件以便随时打印。这样一来,您可以快速方便地将您所需的信息实体化,并将其保存在纸质文档中。无论是在工作中还是日常生活中,iPhone为您提供了一个便携式的打印解决方案。以下帖子将帮助您了解如果您希望使用iPhone在打印机上打印页面,您需要了解的所有信息。从iPhone打印:要求苹

如果您在Windows11/10中无法使用截图工具进行打印,可能是由于系统文件损坏或驱动程序问题导致的。本文将为您提供解决此问题的方法。在Windows11/10中无法从截图工具打印如果您无法从Windows11/10中的SnippingTool打印,请使用这些修复程序:重新启动PC打印机清除打印队列更新打印机和显卡驱动程序修复或重置剪裁工具运行SFC和DISM扫描使用PowerShell命令卸载并重新安装截图工具。我们开始吧。1]重新启动您的PC和打印机重新启动电脑和打印机有助于消除暂时的故障

错误地打印了一个大文件?需要停止或暂停打印以节省墨水和纸张吗?在许多情况下,您可能需要暂停Windows11设备上正在进行的打印作业。如何在Windows11中暂停打印?在Windows11中,暂停打印会暂停打印作业,但并不会取消打印任务。这为用户提供了更灵活的控制权。有三种方法可以实现这一点:使用任务栏暂停打印使用Windows设置暂停打印使用控制面板打印现在,让我们来详细看看这些。1]使用任务栏打印右键单击任务栏上的打印队列通知。单击打开所有活动打印机选项。在这里,右击打印作业并选择全部暂停

Outlook是功能最丰富的电子邮件客户端之一,已成为专业交流不可或缺的工具。其中一个挑战是在Outlook中同时打印所有附件。通常需要逐个下载附件才能打印,但如果想一次性打印所有内容,这就是大多数人遇到的问题。如何打印Outlook中的所有附件尽管大部分信息是在Outlook应用程序中在线维护的,但有时需要将信息打印出来备份。必须亲自签署文件,以满足合同、政府表格或家庭作业等法律要求。有几种方法可以让您一次单击打印Outlook中的所有附件,而不是逐个打印。让我们详细地看看每一个。Outloo

如果您发现在使用Word打印邮件合并文档时出现空白页,这篇文章将对您有所帮助。邮件合并是一项便捷的功能,让您能够轻松创建个性化文档并发送给多个收件人。在MicrosoftWord中,邮件合并功能备受推崇,因为它能够帮助用户节省手动为每个收件人复制相同内容的时间。为了打印邮件合并文档,您可以转到邮件选项卡。但是一些Word用户反映,在尝试打印邮件合并文档时,打印机会打印空白页或根本不打印。这可能是由于格式设置不正确或打印机设置问题。尝试检查文档和打印机设置,确保打印前预览文档,以确保内容正确。如果

如何在Vue中实现打印功能,需要具体代码示例Vue.js是一种用于构建用户界面的渐进式JavaScript框架。在许多Web应用程序中,打印功能是非常重要的一部分。本文将介绍如何在Vue中实现打印功能,并提供具体的代码示例。在Vue中实现打印功能,首先要明确打印的内容是什么。通常,我们会将要打印的内容放在一个HTML元素中,例如一个div。然后,通过Jav
