Разноцветный ввод в консоль

У меня недавно появилось желание создать bash-приложение на c/c++. Я решил создать разноцветный ввод (именно ввод) в консоль (например как в powershell на windows). Но я нигде не смог найти ничего подобного в интернете, как осуществить мою задумку.

введите сюда описание изображения

Например вот так: start жёлтым цветом, а app.exe - белым. Ещё раз напоминаю - не вывод, а ввод.


Ответы (2 шт):

Автор решения: rotabor

Алгоритм достаточно простой, рассмотрим на примере из вопроса. Команда подсвечивается жёлтым, первой во вводе ожидаем команду. Значит, нужно получать нажатые клавиши (не всю строку целиком) и отображать символы на экране жётым. Пробел - конец команды, анализ. Если команда не найдена, то затёрли и напечатали то же самое красным. Если команда распознана, то дальше аргументы отображаем белым.

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;
        }
    }
}
→ Ссылка
Автор решения: Matvj
#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 код"). Здесь код - это шестнадцатеричный код цвета. Вам надо знать эти коды для установки цветов консоли.

→ Ссылка