i'm working on a project and i really want to know if c++ provides to print out colored text or not.
thx

Dani AI

Generated

Short answer: the C++ standard library itself has no built‑in "color" API — colored output is provided by the environment you target (terminal emulator or printer). Several respondents here touched on DOS/Windows approaches (, , ) and on printing vs screen output (, ). Below is a concise, practical summary and some gaps those replies didn’t cover.

For terminal (screen) output the most portable modern approach is ANSI escape sequences; they’re supported by most Unix/Linux terminals and by recent Windows consoles. A minimal C++ example that prints red text:

#include <iostream>

int main() {
    std::cout << "\x1b[31mThis is red\x1b[0m\n";
    return 0;
}

If you need more than occasional colored lines (full‑screen interfaces, input handling, windows/panels), use a console library that abstracts capabilities and queries the terminal (ncurses on Unix, PDCurses on Windows). For small projects, lightweight header‑only wrappers (for example, libraries that expose simple color functions) avoid hand‑coding escape sequences and give automatic fallbacks.

For printing to paper, console color codes won’t help. Produce a color document (PDF or PostScript) or render via a GUI/printing API and send that to the printer driver — that’s the reliable route for color hardcopies. Generating a PDF first and printing it is often the simplest cross‑platform workflow.

Troubleshooting checklist: verify the target terminal supports ANSI; detect when output is redirected to a file/pipe (many programs disable colors then); provide a no‑color fallback; and test on the actual target environment (different shells, terminal emulators and printer drivers behave differently). Use the guidance above to choose the right path for your target (console UI vs simple colored logs vs printed documents).

Recommended Answers

All 6 Replies

As far as I know, this can be accomplished. Printing to a hardware printer is simply a level of abstraction that can be accomplished via printer drivers, etc. I did a quick Google search and came up with this ... I don't know if it will be of much help to you:

msdn.com "C++, Printers"

if you mean print as in output to the screen, check out the other thread above.

You mean to the paper or the screen.

if you want on the screen use conio.h

Colors
------

0    BLACK          /* dark colors */
1    BLUE
2    GREEN
3    CYAN
4    RED
5    MAGENTA
6    BROWN
7    LIGHTGRAY

8     DARKGRAY       /* light colors */
9     LIGHTBLUE
10    LIGHTGREEN
11    LIGHTCYAN
12    LIGHTRED
13    LIGHTMAGENTA
14    YELLOW
15    WHITE

1.textbackground(int) to change the background color
2.textcolor(int) to change text color

Now you can call any to the above funtions as below:
textcolor(2); //green color
textcolor(BLUE); //blue text color( see the above list for more colors)

in C++ sometimes you will have to call clrscr() to clear the screen before the changes will become visible.

if you call clreol() [clear till end of line] only that line will be affected.Then when new text is typed on the next line sometimes the changes will remain other wise the old settings.

This varies from complier to compiler.I have no idea why.

gotoxy(int x,int y); //shift text cursor location, starts at 1,1

Helps ? :!: :idea:

You're right Fire Net.

The colour list is ok. you know that's why i use printf/scanf

In <conio.h> you may find: cprintf(...);cscanf(...) with the same paramters as ...scanf() and ...printf() functions. The difference is that it reads and writes in colours! The textcolor is changed through textcolor() function described by Fire Net. Also, keep in mind that you can make the text blink!: textcolor(BLUE+BLINK). clrscr(void) clears the screan and clreol erases the current line. gotoxy(int x,int y) sets the screen coordinates(where to write) wherex(void);wherey(void) return screen coordinates x=wherex(); I nearly forgot: cputs(char *s) writes a coloured string and cgets(char *s) reads a colour string. In <conio.h> there are even more functions:
-getch(void) gets a character - can be used to stop program execution until a key is pressed----!!!!does not echo on screen
-getche(void) is exactly the same but echos on screen.
-ungetch(void) sends the las read characte back to stdin making it the next character to be read
-kbhit(void) tests if a key was pressed--useful in loops:
while (!kbhit()) putch("a");
-putch(char c) writes the character on screen

I can't remember anything else!!!!! :D

mmhmmm, those are all nice and good until you use vc6++ where you can only create console applications.

here are some api calls you can use instead.

hwnd_type { STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE}
GetStdHandle(hwnd_type)
SetConsoleCursorPosition (handle, cordinates)
SetConsoleTextAttribute(handle, color)

** there a too many to list... so im not going too. However, a complete list can be found in the MSDN.

you need to include windows.h for this.

mmhmmm, those are all nice and good until you use vc6++ where you can only create console applications.

I know they won't work in Visual C but I'm a Borland C++ (for DOS) user. :!:

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.