Разноцветный ввод в консоль
У меня недавно появилось желание создать bash-приложение на c/c++. Я решил создать разноцветный ввод (именно ввод) в консоль (например как в powershell на windows). Но я нигде не смог найти ничего подобного в интернете, как осуществить мою задумку.
Например вот так: start жёлтым цветом, а app.exe - белым. Ещё раз напоминаю - не вывод, а ввод.
Ответы (2 шт):
Алгоритм достаточно простой, рассмотрим на примере из вопроса. Команда подсвечивается жёлтым, первой во вводе ожидаем команду. Значит, нужно получать нажатые клавиши (не всю строку целиком) и отображать символы на экране жётым. Пробел - конец команды, анализ. Если команда не найдена, то затёрли и напечатали то же самое красным. Если команда распознана, то дальше аргументы отображаем белым.
using System;
static class Program {
static void Main() {
char ch;
Console.ForegroundColor = ConsoleColor.Yellow;
while ((ch = Console.ReadKey().KeyChar) != 13) {
if (ch == 32) Console.ForegroundColor = ConsoleColor.White;
}
}
}
#include <iostream>
#include <conio.h>
int main() {
char ch;
system("color 0E"); // Ставим цвет консоли на жёлтый
while ((ch = _getch()) != '\n') {
if (ch == '\0') {
system("color 0F"); // Ставим цвет консоли белый.
}
}
return 0;
}
Этот код работает также, как код rotabot-а, только он написан на С++.
Здесь цвет устанавливается с помощью функции system("color код")
. Здесь код
- это шестнадцатеричный код цвета. Вам надо знать эти коды для установки цветов консоли.