首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C++的输入中获取更多行

从C++的输入中获取更多行
EN

Stack Overflow用户
提问于 2014-11-13 10:44:24
回答 2查看 708关注 0票数 0

我需要从标准输入读行,但我真的不知道,它将是多少。我尝试使用getline()和cin与while循环相结合来完成这个任务,但是它导致了一个无限循环:

代码语言:javascript
复制
string line;
while( getline(cin, string) ){...}

代码语言:javascript
复制
string word;
while( cin >> word ){...}

它不会停在输入的末尾(行是一次出现的,所以用户只按了一次Enter键)。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-11-13 10:50:22

您的问题是从控制台读取。

因为您的控制台在输入空行时不放置EOF(文件结束)。

您应该尝试将输入从一个文件转到您的程序。当没有更多的输入时,这应该结束。

否则,只需检查字符串是否为空,并脱离循环,如果为空。

票数 1
EN

Stack Overflow用户

发布于 2014-11-13 10:55:25

您运行程序的方式,您的输入并没有结束,因为控制台总是可以提供更多的输入。您的程序的行为是正确的,虽然可能不是您想要的方式。那是因为你误解了自己的欲望。

您要寻找的可能是(但我不能确定)程序在输入结束或输入包含空行时结束。这可以按以下方式编码:

代码语言:javascript
复制
int main()
{
    for (std::string line; std::getline(std::cin, line); )
    {
        if (line.empty())
        {
            std::cout << "Got blank line, quitting.\n";
            return 0;
        }

        // process line
    }

    std::cout << "End of input, quitting.\n";
    return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26906985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档