有没有办法迫使cin屈服

Is there a way to force cin to submit?

本文关键字:cin 屈服 有没有      更新时间:2023-10-16

例如,如果用户将要使用cin函数输入某些内容,但过了一段时间后,它会强制用户按enter键,而用户实际上没有按回车键,从而结束cin函数。

  1. Cin正在等待用户完成
  2. 另一个线程调用一个bool值,该值表示cin必须结束
  3. 即使用户没有完成输入,Cin也需要按原样输入

回车键的功能由shell程序实现,C++标准库没有定义对它的任何控制。您需要发送一些进程间信号来获取shell,或者任何输出到cin(在Unix上,由文件描述符1标识)的信号,以刷新其输出。

在Posix系统上提供交互式文本界面的常用方法是ncurses,但我还没有见过它与iostreams一起使用。(嗯,我对诅咒一点也不熟悉。)

我四处挖掘,找到了一种方法!

#include <windows.h>
INPUT input;
memset(&input,0,sizeof(input));
input.type = INPUT_KEYBOARD;
input.ki.wVk=VkKeyScanA('n');
SendInput(1,&input,sizeof(INPUT));
input.ki.dwFlags=KEYEVENTF_KEYUP;
SendInput(1,&input,sizeof(INPUT));

它会刺激回车键或换行。

如图所示http://www.dreamincode.net/forums/topic/153423-simulate-keyboard-press/