Я пытаюсь создать простую программу, которая читает строку, и если она находит заданный символ, она выделяет его красным цветом.
Я уже знаю, как изменить цвет одного символа, и я знаю, что \ 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 - это символ, который должен выводиться в случае, если данное число не найдено