Моя проблема в том, что я хочу сделать что-то особенное, когда мой пользователь нажимает табуляцию в терминале. Мой первый код объясняет, что:Как использовать функции клавиатуры с _getch(), как это возможно с getline()?
char buffer[100];
while (true)
{
std::cin.getline(buffer, 100); // do IMMEDIATELY something if 'tabulation' was used ?
}
Итак, я спросил себя, как проверить все символы? Я пробовал с _getch();
while (true)
{
c = _getch();
if (c == '\t')
// do something special
else
std::cout << (char)c;
}
Но теперь, я не могу использовать любые фирменные блюда в функциональные клавиши, как стрелки, Delaware, suppr и т.д ... Я не могу двигаться в то, что я набрав, как я могу с getline()
Итак, есть ли какие-либо решения для специального прерывания в середине getline()
? Или можно использовать _getch()
по-другому? Я также попытался сделать другой поток (один с getline()
, а другой с _getch()
для проверки каждого), но я не уверен в том, что я могу делать с потоками.
Можно вручную обрабатывать каждую специальную функцию (клавиши со стрелками, del, suppr и т. Д.) Вручную, но я ищу другое решение.
Нет, нет стандартного C++. Это операционная система и терминал. –
Почему вы не используете stdin или scanf? – Gugg
Вы прочитали часть документации, которая объясняет, что значения '_getch' могут вернуться? Знаете ли вы, что вам может потребоваться дважды вызывать '_getch', чтобы получить один ключевой код? –