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

usu*_*arr 0 c++

我需要在std :: string中搜索“ stack stackover”之类的关键字,并返回找到string的所有行。

所以我的std :: string可能看起来像这样,

ghfhfhfhf dghfhf dtgd \n
dgdhfghfgfh  stack overflow \n
stack overflow dgdfgdgdg  \n
dgdgh dgdrgdrgdg  \n
stack overflow dffdbdb  \n
Run Code Online (Sandbox Code Playgroud)

注意,此std :: string中有多行,其中“ \ n”表示行尾。我正在做一个搜索“堆栈溢出”的函数,它将返回一个包含所有匹配行的字符串向量。

例如,返回向量看起来像

v[0]  dgdhfghfgfh  stack overflow \n
v[1]  stack overflow dgdfgdgdg  \n
v[2]  stack overflow dffdbdb  \n
Run Code Online (Sandbox Code Playgroud)

目的是了解命中了多少行以及该行的外观。有人可以帮我吗?

这需要在Linux Redhat上运行。

0x4*_*2D2 5

您可以将每一行放入中std::string,然后使用来find("stack overflow")搜索子字符串。一旦找到,将其推入向量:

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

如果将字符串包装到a中std::stringstream并代替,则上述方法也适用于字符串file