Я пытался добавить цвета к некоторым строкам, которые должны отображаться в терминале, используя код выхода ansi. До сих пор я не понимал, что все ascii вытесняет код, просто попробуйте, скопировав некоторые escape-коды. Затем увидел этот answer, который попросил проверить, что программа должна проверить, что он выполняется в терминале, или продолжать без загрязняющих строк с помощью escape-кодов?Убедитесь, что программа находится в терминале
Ответ объясняет использовать * NIX функция isatty()
на основе которой я узнал, проживает в unistd.h
, который, в свою очередь, не был повышен до cunistd
стандартом CPP основаны на моем понимании, что это не в стандарте языка C на первый place.I попытался снова найти SO, но не смог хорошо понять. Теперь у меня есть два вопроса по этому вопросу:
- В какой среде (правильном слове?) Может ли программа, используя escape-коды ascii, выполнить, чтобы она требовала первоначальной проверки? так как я только для cli.
- Что было бы правильным решением в соответствии со стандартами ISO cpp для решения этой проблемы? используя
unistd.h
? будет ли это использование ограничиваться современной практикой cpp?
Также есть что-нибудь, что я должен прочитать/понять, прежде чем иметь дело с ansi/colors related thing?
'unistd.h' является POSIX заголовок, который целиком и полностью ортогонален С и стандартами C++. Я не думаю, что любой из этих стандартов имеет какое-либо понятие о терминале, поэтому у вас мало выбора, кроме как зависеть от системных API для системных функций. – melak47
Связанный: http://stackoverflow.com/questions/15331566/c-include-unistd-h-why-not-cunistd. –