在编程世界中,有很多场景我们确实希望在较大的文本中寻找特定的模式。一项常见任务是查找并打印给定数组中作为给定字符串中的子字符串出现的每个字符串。这个看似基本的问题可以利用各种方法来解决,在本文中,我们将探讨其中的两种方法。我们将对每种方法所使用的语法和算法进行明确的说明,并提供两个完整的可执行代码示例。
语法
在我们介绍这些方法之前,让我们首先了解我们将用来解决这个问题的语法 -
void printMatchingStrings(string array[], string text);
登录后复制
算法
为了解决从数组中查找并打印给定字符串中作为子字符串出现的所有字符串的问题,我们可以遵循以下分步算法 -
-
初始化一个空向量来存储匹配的字符串。
-
在数组中重复每个字符串。
-
检查当前字符串是否是给定文本的子字符串。
-
假设是,将字符串添加到匹配字符串的向量中。
-
在遍历所有字符串后,打印匹配字符串的向量。
方法一:使用 string.find() 函数
在此技术中,我们将使用 string.find() 函数,该函数返回字符串中子字符串的位置。如果没有找到子字符串,它会返回一个名为 string::npos 的特殊值。
示例
#include
#include
#include
void printMatchingStrings(const std::string array[], const std::string& text, int arraySize) {
std::vector 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