Kun ohjelma tulostaa tekstiä, se on yleensä väritöntä, mutta riippuen pääte-emulaattorista joitain muotoiluja saatetaan tukea.
ANSI-ohjauskoodit ovat ainakin Linuxissa useimmiten tuettuja, mutta esim. Windowsin komentokehoite ei niitä tue. Ohjauskoodi näyttää seuraavalta:
\x1b[<tehosteet>m
\x1b eli merkki nro. 27 aloittaa koodin. Tehosteet erotetaan puolipisteillä (;
). Tehoste on joko 0 (ei tehostetta), 1 (lihavoitus), 4 (alleviivaus), 7 (edusta- ja taustavärit vaihdettu) tai väri. Värit voi tarkistaa seuraavasta taulukosta:
Väri | Edustavärikoodi | Taustavärikoodi |
---|---|---|
Musta | 30 | 40 |
Punainen | 31 | 41 |
Vihreä | 32 | 42 |
Keltainen | 33 | 43 |
Sininen | 34 | 44 |
Magenta | 35 | 45 |
Syaani | 36 | 46 |
Valkoinen | 37 | 47 |
Kaikki tehosteet resetoidaan ohjauskoodilla \x1b[0m
.
// "Esimerkki" lihavoitu, alleviivattu, punainen printf("\x1b[1;4;31mEsimerkki\x1b[0m\n"); // "Esimerkki" valkoista sinisellä printf("\x1b[37;44mEsimerkki\x1b[0m\n"); // "Esi" lihavoitu, keltainen; "merkki" värit käännetty printf("\x1b[1;33mEsi\x1b[7mmerkki\x1b[0m\n");
Tuo tapa ei ainakaan toimi Windowsissa omien kokeilujeni mukaan. C++:n sivuilta löysin kuitenkin tällaisen WinAPI:a käyttävän sydeemin. Siinä ei kuitenkaan ole lihavointia ja kursiivia.
Vinkissä olisi tosiaan hyvä mainita, että ANSI-ohjauskoodit eivät toimi Windowsin tavallisella komentorivillä.
Jos oikeasti haluaa tulostaa väritettyä tekstiä, kannattaa yleensä käyttää valmista kirjastoa, joita ovat ncurses ja PDCurses.
Aihe on jo aika vanha, joten et voi enää vastata siihen.