FlushConsoleInputBuffer()不会刷新输入缓冲区

时间:2018-01-04 21:09:52

标签: c++ winapi windows-console

我正在尝试使用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;
}

0 个答案:

没有答案