C++ 搜索带有前缀的文本文件
我有一个文本文件,每行都有一个名称/位置。有没有一种简单的方法可以根据用户输入的前缀搜索文本文件,并打印以该前缀开头的每一行 使用 逐行遍历文件。 以下是一个依赖于和的代码段:C++ 搜索带有前缀的文本文件,c++,search,text-files,C++,Search,Text Files,我有一个文本文件,每行都有一个名称/位置。有没有一种简单的方法可以根据用户输入的前缀搜索文本文件,并打印以该前缀开头的每一行 使用 逐行遍历文件。 以下是一个依赖于和的代码段: 基本上,您应该遍历文件的每一行并检查其内容。这可以通过ifstream完成,如下所示: ifstream file("text.txt"); if (file.is_open()) { string line; while (std::getline(file, line)) {
基本上,您应该遍历文件的每一行并检查其内容。这可以通过ifstream完成,如下所示:
ifstream file("text.txt");
if (file.is_open())
{
string line;
while (std::getline(file, line))
{
// match
}
}
匹配项的实际方法取决于前缀的复杂性
对于简单的情况,可以使用string方法。例如:
if (!line.compare(0, matchSize, matchPrefix))
{
std::cout << line << std::endl;
}
string prefix = "ab";
bool match = std::equal(prefix.begin(), prefix.end(), line.begin(), [](const char& c1, const char& c2)
{
return tolower(c1) == tolower(c2);
});
正如您所看到的,对于这样一个问题有很多解决方案(还有更多)。应采用哪种方法取决于具体要求和用户输入的处理案例 请定义简单!这显然是家庭作业。我怀疑他的老师会对使用boost感到兴奋,这完全是过火了。对于这么小的问题,如果你还没有安装和配置boost,它是一个惊人的巨大瑞士军锤。“例如:死胡同?由于缺少用户可能实际输入的信息,我考虑删除该部分,直到知道更多细节。
if (!line.compare(0, matchSize, matchPrefix))
{
std::cout << line << std::endl;
}
string prefix = "ab";
bool match = std::equal(prefix.begin(), prefix.end(), line.begin(), [](const char& c1, const char& c2)
{
return tolower(c1) == tolower(c2);
});