如何创建while循环,继续循环直到在C ++中“使用流”输入键?

问题描述 投票:1回答:1

这背后的基本思想是这样做……

std::istringstream in{"",ios::ate};
while(in.empty()){
    //copy contents of 'cin' stream into the 'in'
}

我在Bjarne的书中读到了一些有关流的内容(主要是关于如何使用它们的,并且还阅读了一些关于stackoverflow的答案,关于将流的内容复制以及从istream对象复制到istringstream对象的答案,但是它们没有实际上有任何作用,还有一个问题是,如果我使用getline(),即使定界符设置为“”,它也会等待输入,而我不希望它等待。*我尝试运行一个for循环,并检查在这段时间内键盘是否击中,进入cin,然后他们进入了,但是仍然等待getline(cin,str,'')。标题中有一个主要问题,即使cin有空格,为什么getline(cin,str,'')也要等待?

c++ stream
1个回答
0
投票

“控制台”与C ++的交互主要是特定于系统的,在C ++中没有任何抽象。在终端屏幕上键入内容时,操作系统通常会进行行编辑,并且仅在输入换行符时才将当前行传递给程序。

[通常存在特定于系统的方法来禁用与终端的OS级交互。在POSIX系统上,典型的方法是使用tcgetattr()tcsetattr()启用cononical mode,即在标准输入流上设置ICANON标志(例如,参见my answer to a similar question)。

© www.soinside.com 2019 - 2024. All rights reserved.