我用C ++编写的代码有一部分:
int main(int ac, char **av)
{
std::string line;
while (std::getline(std::cin, line)) {
std::cout << "[" << line << "]\n";
}
return (0);
}
简单的示例代码可以正常工作;它可以一一读取多行(while循环中的单行)并在终端中显示它们:
当我尝试复制粘贴两行或更多行并将其打印在屏幕上时,会出现问题; std::getline()
阻塞并被卡住,直到最后都无法读取输入(我猜想它已经被读取,并且可能存储在缓冲区的某个位置?)。
但是,当我单击Enter时,它会逐行显示左侧的输入内容,这是完全可以实现的,因为它-顾名思义-一次只读取一行。
是否可以通过某种方式解除对std::getline()
的阻塞,以便读取整个代码块?
我希望我解释得很好,谢谢您的帮助!