c++ - 如何创建一个while循环,该循环继续循环直到在C++中输入了 'using streams'键?

标签 c++ stream

这样做的基本思路是这样做……

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++的交互大部分是系统特定的,并且在C++中没有任何抽象。在终端屏幕上键入内容时,操作系统通常会进行行编辑,并且仅在输入换行符时才将当前行传递给程序。

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

关于c++ - 如何创建一个while循环,该循环继续循环直到在C++中输入了 'using streams'键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59491578/

相关文章:

c++ - Eclipse 不解析 avcodec_send_packet()

C++:从 MSVC 切换到 G++:全局变量

stream - OCaml:Stream.peek 不消耗线路?

java - 在 Java 中生成 DES key 并通过套接字传递它

c++ - ncurses newwin() 和 mvwin() 未按预期运行

c++ - 通过 Makefile 的预处理器宏定义在 C++ 中无法正常工作

c++ - 关于函数指针数组声明的疑问

java - URL 扫描器断行

java - 如何将音频流式传输到 OpenAL Sources?

android - 媒体播放器准备时的进度条