很长一段时间以来,我试图在 C++ 中放置一个计时器,它实际上给出了有限的时间来输入任何东西,例如:- 如果我输入
cout<<"Enter the name :-
cin>>name;
cout<<"Enter Phonenoe :- ";
cin>>phoneno;
所以在这个我如何添加时间说 5 秒来输入姓名,如果用户在 5 秒内没有输入任何内容,程序应该去输入音素。
给出完整代码,我是初学者。
很长一段时间以来,我试图在 C++ 中放置一个计时器,它实际上给出了有限的时间来输入任何东西,例如:- 如果我输入
cout<<"Enter the name :-
cin>>name;
cout<<"Enter Phonenoe :- ";
cin>>phoneno;
所以在这个我如何添加时间说 5 秒来输入姓名,如果用户在 5 秒内没有输入任何内容,程序应该去输入音素。
给出完整代码,我是初学者。
纯娱乐。仅适用于 Windows。
#include <windows.h>
#include <iostream>
#include <string>
bool wait_for_key(int timeout_milliseconds, char& ch) {
HANDLE tui_handle = GetStdHandle(STD_INPUT_HANDLE);
DWORD tui_evtc = 0;
DWORD deadline = GetTickCount() + timeout_milliseconds;
INPUT_RECORD tui_inrec = { 0 };
DWORD tui_numread = 0;
while (GetTickCount() < deadline) {
if (tui_evtc > 0) {
ReadConsoleInput(tui_handle, &tui_inrec, 1, &tui_numread);
if (tui_inrec.EventType == KEY_EVENT) {
if (tui_inrec.Event.KeyEvent.bKeyDown) {
ch = tui_inrec.Event.KeyEvent.uChar.AsciiChar;
return true;
}
}
}
YieldProcessor();
GetNumberOfConsoleInputEvents(tui_handle, &tui_evtc);
}
return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE tui_handle = GetStdHandle(STD_INPUT_HANDLE);
std::string name;
std::string other;
std::cout << "name: ";
char ch;
if (wait_for_key(5000, ch)) {
std::cout << ch;
std::getline(std::cin, name);
name = ch + name;
std::cout << "name is '" << name.c_str() << "'" << std::endl;
} else {
std::cout << std::endl << "other: ";
std::getline(std::cin, other);
std::cout << "other is '" << other.c_str() << "'" << std::endl;
}
return 0;
}
好吧,我被否决了。
我为此找到的最好的谷歌是在这里。简而言之,这在 C++ 中很难做到,我相信不可能以可移植的方式做到。在汇编程序中,我会轮询最低级别的键盘中断(我认为是 9h)以查看会发生什么,但那是在 DOS 时代,我不确定这是否有效。