Answer the question
In order to leave comments, you need to log in
How to output colored text to the console from a C++ & Visual Studio program under Windows?
Hello! There is a need to output colored text to the console.
Tried different options:
1)SetConsoleTextAttribute();
We display brackets in white, the word ERR! red:Да, способ хороший, но приходится вызывать
#include <Windows.h> #include <stdio.h> int main() { HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); printf("[ "); SetConsoleTextAttribute(console, FOREGROUND_RED); printf("ERR!"); SetConsoleTextAttribute(console, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED); printf(" ]"); system("pause"); return 0; }
printf
3 раза и делатьHANDLE
.
Если программа будет запускаться на XP с 64 Мегабайтами DDR2 и старинным (медленном) HDD, то будет видно, что выводятся символы последовательно (особенно с процом на 233 МГц).
SetConsoleColor();
(self-writing.h)Выводим тоже самое, но с помощью своего самописа:А вот тут уже проблемы, т.к. функция
#include <Windows.h> #include <stdio.h> int main() { HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); printf("[ "); SetConsoleColor(Red, Black); printf("ERR!"); SetConsoleColor(White, Black); printf(" ]"); system("pause"); return 0; }
SetConsoleColor
основана на консольной командеcolor
, которая весь текст окрашивает, а не его часть.
Можно конечно переписать для упрощения первый способ в эту библиотеку, но от трёх разовогоprintf();
не избавит.
System.out.println("\u001B[31mRed Text!\u001B[0mNormal Text");
Answer the question
In order to leave comments, you need to log in
windows 10
EXAMPLE_OF_ENABLING_VIRTUAL_TERMINAL_PROCESSING
#include <stdio.h>
#include <wchar.h>
#include <windows.h>
int main()
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (hOut == INVALID_HANDLE_VALUE)
{
return GetLastError();
}
DWORD dwMode = 0;
if (!GetConsoleMode(hOut, &dwMode))
{
return GetLastError();
}
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
if (!SetConsoleMode(hOut, dwMode))
{
return GetLastError();
}
wprintf(L"\u001B[31mRed Text!\u001B[0mNormal Text\r\n");
getchar();
return 0;
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question