Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 搜索带有前缀的文本文件_C++_Search_Text Files - Fatal编程技术网

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);
});