我正在尝试使用WinAPI函数FlushConsoleInputBuffer
,但我要么完全不了解如何使用它,要么它是如何工作的。
我用它来刷新控制台应用程序中的标准输入缓冲区。
我要做的唯一事情就是刷新缓冲区,以便程序执行将在getline
语句处停止。目的是找到除使用cin.ignore
以外的方法并使用WinAPI函数。
非常感谢您的见解。
HANDLE hStdOut, hStdIn;
int _tmain(int argc, _TCHAR* argv[])
{
CONSOLE_SCREEN_BUFFER_INFO cScrnBuffInfoOut;
bool bIsConsoleFlushed = FALSE;
bool bConsoleInputBufferInfo = FALSE;
char buff[80] = {0};
string response;
//-- get handle to the standard input and standard output
hStdIn = GetStdHandle(STD_INPUT_HANDLE);
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
bConsoleInputBufferInfo = GetConsoleScreenBufferInfo(hStdOut, &cScrnBuffInfoOut);
cout << "Enter string 1\n";
bIsConsoleFlushed = FlushConsoleInputBuffer(hStdIn);
scanf("%s", buff);
cout << "Enter string 2\n";
// cin.ignore();
bIsConsoleFlushed = FlushConsoleInputBuffer(hStdIn);
getline(cin, response);
getch();
return 0;
}