"while(getline(cin, name))"如何控制未知行数的查询?

How does "while(getline(cin, name))" controls an unknown number of lines of queries?

在 HackerRank 的一个问题中,有一个条件需要未知数量的查询行。问题的link是:

Day 8: Dictionaries and Maps

我无法解决每个测试用例的问题,但我查看了解决方案,发现人们正在使用 while(getline(cin, name)) 来控制 未知数量的查询行 如下所示:

    string name;
    while(getline(cin, name))
    {
        std::map<string, string>::iterator it;
        it = phoneList.find(name);
        if (it == phoneList.end()){
            cout << "Not found" << endl;
        } else {
            cout << name << "=" << it->second << endl;
        }
    }

现在,我不明白 未知数量的查询行 是如何由 while(getline(cin, name))[=27= 控制的].

std::cin 是一个输入流。

std::getlinestd::cin 读取一行并将其写入 name。如果没有错误,它 returns 相当于 true,否则 false

while 循环因此读取行直到它失败或中断。

您可以使用 std::cin.setstate(std::ios_base::failbit); 强制失败,或者 break 退出 for 循环。