我想检测用户在按下 Enter 之前是否输入了字符

I want to detect if a character has been entered by the user before enter is pressed

本文关键字:是否 输入 字符 Enter 检测 用户      更新时间:2023-10-16

我正在创建一个文本编辑器,这是它的代码:

#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <conio.h>
int main()
{
    system("cls"); system("COLOR F0");
    std::string input;
    static int lineNo=0;
    while(true)
    {
        lineNo+=1;
        std::cout << lineNo << "t";
        input=="{" ? std::cout << "t" : std::cout << "";
        input=="(" ? std::cout << "t" : std::cout << "";
        input=="[" ? std::cout << "t" : std::cout << "";
        std::getline(std::cin, input);
    }
    return 0;
}

我想为括号创建一个自动完成工具,该工具在键入左括号后立即进入右括号。请帮助我,因为我只是一个初学者。

您可以使用 conio.h 库中的 getch() 函数仅扫描单个字符。您可以声明一个字符变量并扫描这样的大括号。

char in;
in=getch();
if(in=="{")
{
 //Write your code according to your uses.
}
std::cin

程序的标准输入。它(通常)并不意味着"用户的键盘",甚至不意味着"输入终端"或类似的东西。如何从cin获取内容取决于如何将内容写入标准输入,这通常不会逐个字符发生。通常,您的终端仅在换行符后(在用户按回车键后)将数据发送到程序的标准输入,在这种情况下,您无法事先通过cin访问该数据。

对于你所描述的内容,你需要使用(正如Joachim Pileborg指出的)特定于平台的功能,例如Windows上的PeekConsoleInput。您可能还会发现 GetAsyncKeyState 很有用。