我需要在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上运行。
答案 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
,则上述内容也适用于字符串。