Цветной вывод в Turbo C ++

Мой компилятор - Turbo C ++ v3.0 с DOS v5.0, эмулированный в DOSBox v0.74
Я использую это, потому что Turbo C ++ - это компилятор, который моя старшая школа выбрала для обучения языку программирования C ++. Было подчеркнуто, что я использую этот компилятор при написании кода моего последнего семестрового проекта.

Я использую Windows 8.1 (64 бит) с процессором Intel Core i5-3317U @ 1,70 ГГц

Ради живости и дань уважения популярной культуре, Я хочу, чтобы на моих экранах вывода был зеленый текст.

Вот что вроде бы работало:

#include<iostream.h>
#include<conio.h>
void main(){
 clrscr();
 textcolor(2); // text set to green colour (conio.h function)
 cprintf("\n\t Hello World"); // cprintf from conio.h
 cout << "\n\t Hello World"; // cout from iostream.h
 getch();
}

Результатом является следующий (экран был обрезан для экономии места в этом сообщении):

привет, мир

Согласно разделу справки в Turbo C ++,

cprintf() отправляет форматированный вывод в текстовое окно на экране.

Как видите, текст, напечатанный на экране cout, не является зеленым, и мой проект состоит из множества cin и cout, а также некоторых файлов для записи и чтения.

Желаемый результат (хотя я еще не пробовал), скорее всего, может быть получен заменой всех моих cout << "..."; на cprintf("...");, но я написал так много операторов cout, что будет сложно так сильно редактировать код.

cprintf для меня новая территория, и я немного ошеломлен тем, как cprintf("\t"); превосходит o

Так что я не хочу этим пользоваться. Я не хочу использовать это до тех пор, пока это не будет моим единственным вариантом.

Библиотеки cstdlib.h и windows.h недоступны в Turbo C ++, поэтому я тоже не могу использовать их утилиты для получения того, что хочу.

В конце концов, все, что мне нужно, - это приглашение для вывода текста, который я cout выделил ярко-зеленым цветом. Было бы неплохо внести минимальные изменения в мой код. Я бы даже не возражал, чтобы для этого пришлось изменить некоторые настройки моего эмулятора, компилятора или оболочки.

Любая помощь очень ценится. Заранее спасибо =)


person MisterGeeky    schedule 04.12.2014    source источник
comment
К вашему сведению, курс, скорее всего, принесет вам больше вреда, чем пользы.   -  person chris    schedule 04.12.2014
comment
@chris: Я знаю и обещаю заново выучить C ++, как только закончу учебу. Но пока я застрял в использовании компилятора старше меня и пишу код, который даже хранитель криптовалют считает устаревшим.   -  person MisterGeeky    schedule 04.12.2014
comment
Я не использовал Turbo C ++ несколько десятилетий, но помню, когда он считался «Лучшим». Интересно, есть ли в их реализации iostreams средство, позволяющее делать что-то вроде cout.color (0x0020ff). Примерно так же, как мы делаем для установки символов заполнения: cout.fill ('#'); или ширина поля: cout.width (4);   -  person Brad S.    schedule 04.12.2014
comment
другая мысль, а можно ли в DOSBox установить цвет переднего плана?   -  person Brad S.    schedule 04.12.2014
comment
@BradS. Я много искал, и у меня нет потенциальных клиентов по такому методу cout. Кроме того, я не могу редактировать какие-либо настройки экземпляра dosbox, потому что я загрузил turboc ++ и dosbox как пакет. Я добавил ссылку на него в вопросе.   -  person MisterGeeky    schedule 04.12.2014


Ответы (3)


А, звонили 90-е, хотят вернуть свой QEMM :)

Единственное решение, которое я могу придумать, - это поместить это в ваш CONFIG.SYS:

DEVICE=C:\DOS\ANSI.SYS

а затем выведите escape-последовательности ANSI.

person Bulletmagnet    schedule 04.12.2014
comment
Собственно, я могу придумать другое решение: какую-то библиотеку проклятий, например примерно в 1992 году существовала библиотека PCCurses: groups.google. ru / forum / #! topic / comp.unix.msdos / t3oX7908rsc - person Bulletmagnet; 05.12.2014

Вы можете использовать библиотеку constream для вывода цветного текста:

#include <constrea.h>
int main()
{
    constream cout;
    cout << setclr(2);
    cout << "\n\t Hello, World!" << endl;
    getch();
    return 0;
}

Я не знаю, что делать с символом табуляции.

person Zexuo    schedule 12.09.2015

вам просто нужно добавить clrscr (); функция после textcolor (); и это работает с couts

person Prakhar Jain    schedule 05.02.2017