为什么我的暴力字符串匹配算法不显示输出?

Why isn't my brute-force string match algorithm display an output?

这里是bfSM算法的源代码。该程序应显示找到与模式完全匹配的部分的起始索引,如果给定文本中没有匹配项,则显示 -1。我尝试包括我迄今为止在编程时使用的所有库,但是当我调试程序时,除了“(进程 15936)以代码 0 退出”之外,控制台上没有显示任何内容。我不确定我到底错过了什么,希望能得到一些帮助。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip>
#include<stdio.h>
#include<string.h>
using namespace std;

int bruteForceSM(string p, string t) {
    for (int i = 0; i < (t.size() - p.size()); i++) {
        int j = 0;
        while(j < p.size() && p[j] == t[i + j]) { j++; }
        if (j == p.size()) { return i; }
    }
    return -1;
}

int main(){
    string text = "sally sells seashells by the seashore";
    string pattern = "shell";
    bruteForceSM(pattern, text);
    return 0;
}

你从不打印结果,这就是你看不到任何结果的原因。 在主函数中,替换

bruteForceSM(pattern, text);

cout << "Index at which pattern is found: " << bruteForceSM(pattern, text) << endl;

这将打印

Index at which pattern is found: 15

作为附加的一般建议:永远不要使用 using namespace std;(有关原因的更多信息,请参阅 Why is "using namespace std;" considered bad practice?)。