
TermColor เป็นไลบรารี C ++ เฉพาะส่วนหัวสำหรับการพิมพ์ข้อความสีไปยังเทอร์มินัล เขียนเพื่อความสนุกสนานด้วยความช่วยเหลือของกองทัพ TermColor ใช้การจัดรูปแบบสี ANSI เพื่อให้คุณสามารถใช้กับทุกระบบที่ใช้เทอร์มินัลดังกล่าว (ระบบ NIX ส่วนใหญ่ *รวมถึง Linux และ Mac OS)
บันทึก
บน Windows จะใช้ Windows API แทนรหัสหลบหนี แต่มีการใช้ข้อ จำกัด บางอย่าง (ไม่ใช่ทุกอย่างที่รองรับ) นั่นเป็นเหตุผลที่แนะนำให้เข้าสู่โหมดการประมวลผลเทอร์มินัลเสมือนจริงและตั้งค่า TERMCOLOR_USE_ANSI_ESCAPE_SEQUENCES เพื่อหลอก TermColor เพื่อใช้รหัสสี ANSI
ได้รับใบอนุญาตภายใต้ใบอนุญาต BSD (3 ข้อ) โดยทั่วไปหมายถึง: ทำทุกอย่างที่คุณต้องการตราบเท่าที่ลิขสิทธิ์ติดอยู่รอบ ๆ
เพิ่ม termcolor.hpp (คว้าจาก include/termcolor/termcolor.hpp ) ไปยังโครงการและใช้ตัวจัดการสตรีมจาก termcolor namespace
คุณยังสามารถใช้ VCPKG เพื่อติดตั้งไลบรารี:
$ vcpkg install termcolorหรือถ้าคุณอยู่ใน macOS คุณสามารถใช้ homebrew เพื่อจุดประสงค์นั้น:
$ brew install termcolorสำหรับข้อมูลที่ทันสมัยเกี่ยวกับแพ็คเกจที่มีอยู่โปรดดูภาพต่อไปนี้:
ใช้งานง่ายมาก ความคิดนี้สร้างขึ้นจากตัวจัดการสตรีม C ++ แอปพลิเคชั่น« Hello World »ทั่วไปเป็นแบบนี้:
# include < iostream >
# include < termcolor/termcolor.hpp >
int main ( int /* argc */ , char ** /* argv */ )
{
std::cout << termcolor::red << " Hello, " ; // 16 colors
std::cout << termcolor::color< 100 > << " Colorful " ; // 256 colors
std::cout << termcolor::color< 211 , 54 , 130 > << " World! " ; // true colors
std::cout << std::endl;
return 0 ;
}แอปพลิเคชันด้านบนพิมพ์สตริงโดยใช้สีที่แตกต่างกัน มีข้อแม้หนึ่งข้อ คุณต้องไม่ลืมรีเซ็ตสีมิฉะนั้นจะถูกนำไปใช้กับงานพิมพ์อื่น ๆ เช่นกัน
std::cout << termcolor::red << " Hello, Colorful World! " << std::endl;
std::cout << " I'm RED too! " << std::endl;เวอร์ชันที่ถูกต้องของรหัสด้านบนควรมีลักษณะเช่นนี้:
std::cout << termcolor::red << " Hello, Colorful World! " << termcolor::reset << std::endl;
std::cout << termcolor::reset << " Here I'm! " << std::endl; โดยค่าเริ่มต้น TermColor จะละเว้นสีใด ๆ สำหรับสตรีมที่ไม่ใช่ tty (เช่น std::stringstream ) ดังนั้นตัวอย่างต่อไปนี้
std::stringstream ss;
ss << termcolor::red << " unicorn " ;
std::cout << ss.str(); จะพิมพ์« unicorn »โดยใช้สีเริ่มต้นไม่ใช่สีแดง เพื่อที่จะเปลี่ยนพฤติกรรมนี้เราสามารถใช้ termcolor::colorize ที่บังคับใช้สีไม่ว่าจะเกิดอะไรขึ้น
ผู้ควบคุมถูกแบ่งออกเป็นสี่กลุ่ม:
นอกจากนี้ยังมีตัวควบคุมสีสำหรับ 16 สี 256 สีและจานสีจริง
บันทึก
ในขณะที่ termcolor รองรับสีที่แท้จริง แต่ก็จำเป็นสำหรับเครื่องจำลองเทอร์มินัลที่คุณใช้ในการเรียกใช้ซอฟต์แวร์ของคุณเพื่อรองรับสีที่แท้จริงเช่นกัน ดังนั้นโปรดตรวจสอบให้แน่ใจว่าได้รับการสนับสนุนก่อนยื่นปัญหา
termcolor::greytermcolor::redtermcolor::greentermcolor::yellowtermcolor::bluetermcolor::magentatermcolor::cyantermcolor::whitetermcolor::bright_greytermcolor::bright_redtermcolor::bright_greentermcolor::bright_yellowtermcolor::bright_bluetermcolor::bright_magentatermcolor::bright_cyantermcolor::bright_whitetermcolor::color<256_COLOR_CODE>termcolor::color<RED, GREEN, BLUE>termcolor::on_greytermcolor::on_redtermcolor::on_greentermcolor::on_yellowtermcolor::on_bluetermcolor::on_magentatermcolor::on_cyantermcolor::on_whitetermcolor::on_bright_greytermcolor::on_bright_redtermcolor::on_bright_greentermcolor::on_bright_yellowtermcolor::on_bright_bluetermcolor::on_bright_magentatermcolor::on_bright_cyantermcolor::on_bright_whitetermcolor::on_color<256_COLOR_CODE>termcolor::on_color<RED, GREEN, BLUE> (Windows API ไม่สนับสนุนผู้ควบคุมเหล่านี้ยกเว้น underline )
termcolor::boldtermcolor::darktermcolor::italictermcolor::underlinetermcolor::blinktermcolor::reversetermcolor::concealedtermcolor::crossed(Windows API ไม่รองรับผู้ควบคุมเหล่านี้)
termcolor::colorizetermcolor::nocolorize<windows.h> เนมสเปซทั่วโลกอาจถูกปนเปื้อนด้วยแมโคร min/max หากเอฟเฟกต์ดังกล่าวเป็นที่ต้องการโปรดพิจารณาใช้ #define NOMINMAX ก่อน #include <termcolor.hpp>