用c++编写一个字符串匹配程序,如果能匹配到,输出开始的下标
时间: 2024-09-07 09:05:29 浏览: 50
c++字符串分割的方法
5星 · 资源好评率100%
在C++中编写一个字符串匹配程序,可以使用多种算法,比如朴素字符串匹配算法或KMP算法(Knuth-Morris-Pratt算法)。这里,我将演示一个简单的朴素字符串匹配算法的实现,它通过遍历文本字符串,并在每个位置上尝试匹配模式字符串来工作。
下面是一个简单的C++代码示例,用于实现朴素的字符串匹配算法:
```cpp
#include <iostream>
#include <string>
// 朴素字符串匹配算法
std::vector<int>朴素匹配(const std::string &文本, const std::string &模式) {
std::vector<int>匹配位置;
int 文本长度 = 文本.length();
int 模式长度 = 模式.length();
for (int i = 0; i <= 文本长度 - 模式长度; ++i) {
int j = 0;
while (j < 模式长度 && 文本[i + j] == 模式[j]) {
++j;
}
if (j == 模式长度) {
匹配位置.push_back(i); // 找到匹配,记录下标
}
}
return 匹配位置;
}
int main() {
std::string 文本, 模式;
std::cout << "请输入文本字符串: ";
std::cin >> 文本;
std::cout << "请输入模式字符串: ";
std::cin >> 模式;
std::vector<int> 匹配下标 = 朴素匹配(文本, 模式);
if (匹配下标.empty()) {
std::cout << "未找到匹配。" << std::endl;
} else {
std::cout << "匹配的开始下标为: ";
for (int 下标 : 匹配下标) {
std::cout << 下标 << " ";
}
std::cout << std::endl;
}
return 0;
}
```
这段代码首先定义了一个`朴素匹配`函数,它接受两个字符串作为参数:一个是文本字符串,另一个是模式字符串。函数返回一个整数向量,包含所有匹配的开始下标。在`main`函数中,程序提示用户输入文本和模式字符串,然后调用`朴素匹配`函数进行匹配,并输出所有匹配的开始下标。
阅读全文