如何使用C ++检查.text文件中的字符序列?

How to check for a character sequence in a .text file using C++?

我有一个.txt文件,其中包含连续的字符序列(没有空格)。我想在.txt文件中搜索一系列字符,但做这件事有困难。

1
2
3
4
5
6
7
8
9
10
ifstream fin;
    fin.open("sample.txt");
    while (!fin.eof())
    {
        ch = getchar();
        if (ch == 'p' && ch + 1 == 'o' && ch + 2 == 'w')
            std::cout <<"Sequence found" <<"
"
;
    }
    fin.close();


这行不通,你读的是ch,但ch + 1不是下一个字符(你还没有读)。它只是ch增加了1,所以这是字母表中的下一个字母,一个更大的数字,等等,这取决于ch是什么。

如果你只是想看看序列是否在一个文件中,那么我会把文件读入一个std::string,就像这个答案所说的:

1
2
3
4
5
std::string slurp(std::ifstream& in) {
    std::stringstream sstr;
    sstr << in.rdbuf();
    return sstr.str();
}

所以你传递函数fin,得到一个包含文件内容的字符串。然后你试着找到你的顺序,就像这个答案解释的那样:

1
2
3
4
if (myString.find("pow") != std::string::npos) {
    std::cout <<"found!" << '
'
;
}