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

时间:2014-03-25 00:07:54

标签: c++

我需要在std :: string中搜索关键词“stack overflow”,然后返回找到字符串的所有行。

所以我的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上运行。

1 个答案:

答案 0 :(得分:4)

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

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

如果您将字符串包装到std::stringstream并使用该字符串代替file,则上述内容也适用于字符串。