C ++从标准输入读取多行

时间:2018-07-19 05:24:15

标签: c++ io getline nonblocking

我用C ++编写的代码有一部分:

int     main(int ac, char **av)
{
    std::string line;

    while (std::getline(std::cin, line)) {
        std::cout << "[" << line << "]\n";
    }   
    return (0);
}

简单的示例代码可以正常工作;它可以一一读取多行(while循环中的单行)并在终端中显示它们:

in terminal

当我尝试复制粘贴两行或更多行并将其打印在屏幕上时,会出现问题; std::getline()阻塞并被卡住,直到最后都无法读取输入(我猜想它已经被读取,并且可能存储在缓冲区的某个位置?)。

但是,当我单击Enter时,它会逐行显示左侧的输入内容,这是完全可以实现的,因为它-顾名思义-一次只读取一行。

是否可以通过某种方式解除对std::getline()的阻塞,以便读取整个代码块?
我希望我解释得很好,谢谢您的帮助!

0 个答案:

没有答案