Я хочу определить, был ли введен символ пользователем, прежде чем нажать Enter

Я создаю текстовый редактор и вот его код:

#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;
}

Я хочу создать инструмент автозаполнения для скобок, который вводится в закрывающую скобку сразу после ввода открывающей скобки. Пожалуйста, помогите мне, так как я только начинающий.

0

Решение

Вы можете использовать функцию getch () из библиотеки conio.h для сканирования только одного символа. Вы можете объявить символьную переменную и сканировать фигурные скобки, как это.

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

Другие решения

std::cin это стандартный ввод вашей программы. Это не означает (в общем случае) «клавиатуру пользователя» или даже «ввод в терминал» или что-то в этом роде. Как вы получаете материал от cin зависит от того, как вещи записываются на ваш стандартный ввод, что обычно не происходит символ за символом. Часто ваш терминал отправляет данные на стандартный ввод программы только после новой строки (после того, как пользователь нажимает ввод), и в этом случае вы не можете заранее получить эти данные через cin,

Для того, что вы описываете, вам нужно использовать (как отметил Йоахим Пилеборг) функциональность, специфичную для платформы, такую ​​как PeekConsoleInput на винде. Вы также можете найти GetAsyncKeyState полезно.

0

По вопросам рекламы [email protected]