Как удалить символ, который был выведен на определенную позицию в CMD? - PullRequest
0 голосов
/ 11 июня 2019

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

Я уже знаю, как изменить цвет одного символа, и я знаю, что \ b существует, но я не уверен, как заставить его удалить символ в определенной позиции. Например, если строка aaaBaaa, а заданный символ - B, то цвет B должен быть изменен на красный.

Проблема с этим кодом в том, что он удаляет весь другой текст, кто-нибудь знает, как это исправить?

Я попробовал system ("cls"), а затем снова напечатал всю строку, но цвет конкретного символа изменился, но я не думаю, что это лучший ответ.

Я пробовал \ b, но он удаляет все, что находится ниже строки. Например, если у нас есть 5 строк и мы проверяем верхнюю строку, остальные будут удалены.

Пока это мой код:

char ch = '0'; // What is printed in case it finds nothing
for (auto x : test)
{
    if (x == 'X')
    {
        SetConsoleTextAttribute(hConsoleOut, color); // if x == 'X' we set the color to red
        WriteConsole(hConsoleOut, &x, sizeof(x) / sizeof(char), &done, 0); // we print
        ch = 'X'; // for later use
        Sleep(3000); // to check if it turns red
        break;
    }
}
cout << '\b';
if (ch == 'X')
{
    SetConsoleTextAttribute(hConsoleOut, 0x7); // set color to default
    WriteConsole(hConsoleOut, &ch, sizeof(ch) / sizeof(char), &done, 0); // print
}
else
{
    WriteConsole(hConsoleOut, &ch, sizeof(ch) / sizeof(char), &done, 0);
}

test - строка ch - это символ, который должен выводиться в случае, если данное число не найдено


...