在编程世界中,有很多场景我们确实希望在较大的文本中寻找特定的模式。一项常见任务是查找并打印给定数组中作为给定字符串中的子字符串出现的每个字符串。这个看似基本的问题可以利用各种方法来解决,在本文中,我们将探讨其中的两种方法。我们将对每种方法所使用的语法和算法进行明确的说明,并提供两个完整的可执行代码示例。
语法
在我们介绍这些方法之前,让我们首先了解我们将用来解决这个问题的语法 -
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中文网其他相关文章!

C 在现代编程中仍然具有重要相关性。1)高性能和硬件直接操作能力使其在游戏开发、嵌入式系统和高性能计算等领域占据首选地位。2)丰富的编程范式和现代特性如智能指针和模板编程增强了其灵活性和效率,尽管学习曲线陡峭,但其强大功能使其在今天的编程生态中依然重要。

C 学习者和开发者可以从StackOverflow、Reddit的r/cpp社区、Coursera和edX的课程、GitHub上的开源项目、专业咨询服务以及CppCon等会议中获得资源和支持。1.StackOverflow提供技术问题的解答;2.Reddit的r/cpp社区分享最新资讯;3.Coursera和edX提供正式的C 课程;4.GitHub上的开源项目如LLVM和Boost提升技能;5.专业咨询服务如JetBrains和Perforce提供技术支持;6.CppCon等会议有助于职业

C#适合需要高开发效率和跨平台支持的项目,而C 适用于需要高性能和底层控制的应用。1)C#简化开发,提供垃圾回收和丰富类库,适合企业级应用。2)C 允许直接内存操作,适用于游戏开发和高性能计算。

C 持续使用的理由包括其高性能、广泛应用和不断演进的特性。1)高效性能:通过直接操作内存和硬件,C 在系统编程和高性能计算中表现出色。2)广泛应用:在游戏开发、嵌入式系统等领域大放异彩。3)不断演进:自1983年发布以来,C 持续增加新特性,保持其竞争力。

C 和XML的未来发展趋势分别为:1)C 将通过C 20和C 23标准引入模块、概念和协程等新特性,提升编程效率和安全性;2)XML将继续在数据交换和配置文件中占据重要地位,但会面临JSON和YAML的挑战,并朝着更简洁和易解析的方向发展,如XMLSchema1.1和XPath3.1的改进。

现代C 设计模式利用C 11及以后的新特性实现,帮助构建更灵活、高效的软件。1)使用lambda表达式和std::function简化观察者模式。2)通过移动语义和完美转发优化性能。3)智能指针确保类型安全和资源管理。

C 多线程和并发编程的核心概念包括线程的创建与管理、同步与互斥、条件变量、线程池、异步编程、常见错误与调试技巧以及性能优化与最佳实践。1)创建线程使用std::thread类,示例展示了如何创建并等待线程完成。2)同步与互斥使用std::mutex和std::lock_guard保护共享资源,避免数据竞争。3)条件变量通过std::condition_variable实现线程间的通信和同步。4)线程池示例展示了如何使用ThreadPool类并行处理任务,提高效率。5)异步编程使用std::as

C 的内存管理、指针和模板是核心特性。1.内存管理通过new和delete手动分配和释放内存,需注意堆和栈的区别。2.指针允许直接操作内存地址,使用需谨慎,智能指针可简化管理。3.模板实现泛型编程,提高代码重用性和灵活性,需理解类型推导和特化。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver CS6
视觉化网页开发工具

WebStorm Mac版
好用的JavaScript开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

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