如何在c++中逐行搜索并返回匹配的行

How to search line by line and return matched lines in C++

本文关键字:返回 搜索 c++ 逐行      更新时间:2023-10-16

我需要在std::string中搜索像"stack overflow"这样的关键字,并返回找到string的所有行。

所以std::string可能是这样的

ghfhfhfhf dghfhf dtgd n
dgdhfghfgfh  stack overflow n
stack overflow dgdfgdgdg  n
dgdgh dgdrgdrgdg  n
stack overflow dffdbdb  n

注意,在这个std::string中有多行,其中"n"表示行结束。我正在制作一个函数来搜索"堆栈溢出",它将返回一个包含所有匹配行的字符串向量。

例如,返回向量如下:

v[0]  dgdhfghfgfh  stack overflow n
v[1]  stack overflow dgdfgdgdg  n
v[2]  stack overflow dffdbdb  n

目标是知道有多少行有命中,以及这行是什么样子的。有人能帮我一下吗?

这需要在Linux Redhat上运行。

您可以将每一行放入std::string,并使用find("stack overflow")搜索子字符串。找到后,将其放入vector容器:

while (std::getline(file, line))
{
    if (line.find("stack overflow") != line.end())
        v.push_back(line);
}

以上也适用于字符串,如果你将字符串包装成std::stringstream并使用它来代替file