# include " rang.hpp "
using namespace std ;
using namespace rang ;
int main ()
{
cout << " Plain old text "
<< style:: bold << " Rang styled text!! "
<< style::reset << endl;
}
rang ขึ้นอยู่กับไลบรารีมาตรฐาน C++ เท่านั้น ส่วนหัวของระบบ unistd.h
บน unix และส่วนหัวของระบบ windows.h
& io.h
บนระบบที่ใช้ windows กล่าวอีกนัยหนึ่ง คุณไม่จำเป็นต้องพึ่งพาบุคคลที่สามใดๆ
rang เป็นไลบรารี่แบบส่วนหัวเดียวเท่านั้น ใส่ rang.hpp
ในโฟลเดอร์รวมลงในแผนผังซอร์สโปรเจ็กต์โดยตรงหรือที่ใดที่หนึ่งที่สามารถเข้าถึงได้จากโปรเจ็กต์ของคุณ
หรือหากคุณใช้ตัวจัดการแพ็คเกจ conan ให้ทำตามขั้นตอนเหล่านี้:
เพิ่มการอ้างอิงเพื่อ ส่ง ไปยังส่วน ที่ต้องการ ของไฟล์ conanfile.txt
ของโปรเจ็กต์ของคุณ:
[requires]
rang/3.1.0@rang/stable
รันคำสั่งติดตั้งของโคนัน:
conan install
Rang ใช้วัตถุ iostream - cout
/ clog
/ cerr
เพื่อใช้แอตทริบิวต์กับข้อความที่ส่งออก เนื่องจาก rang มีเป้าหมายที่จะสนับสนุนทั้งระบบ windows และ unix ดังนั้นจึงดูแลรายละเอียดเฉพาะของระบบปฏิบัติการและพยายามจัดเตรียมอินเทอร์เฟซที่เหมือนกัน เนื่องจากความไม่เข้ากันของระบบปฏิบัติการเวอร์ชันที่แตกต่างกัน จึงทำให้บางระบบไม่รองรับแอตทริบิวต์ทุกประเภท ดังนั้น rang จะพยายามข้ามอันที่อาจทำให้เกิดขยะ (แทนที่จะกดรหัส Escape ANSI แบบสุ่มบนสตรีมของคุณ) การตรวจหา tty จะได้รับการจัดการภายในด้วย ดังนั้นคุณไม่จำเป็นต้องตรวจสอบว่าผู้ใช้แอปพลิเคชันอาจเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์หรือไม่
ต้องการการสนับสนุนสำหรับเทอร์มินัลที่ไม่ใช่ ansi หรือไม่? ตรวจสอบ Termdb ซึ่งรองรับเทอร์มินัลเกือบทั้งหมดและความสามารถต่างๆ
นอกเหนือจากการตั้งค่าแอตทริบิวต์ข้อความแล้ว คุณยังสามารถขอให้ rang แทนที่พฤติกรรมเริ่มต้นได้ด้วยวิธีการเหล่านี้ -
void rang::setControlMode (rang::control);
โดยที่ rang::control
ใช้เวลา
control::Auto
- ตรวจจับโดยอัตโนมัติว่าเทอร์มินัลรองรับสีหรือไม่ ( ค่าเริ่มต้น )control::Off
- ปิดสีทั้งหมดcontrol::Force
- บังคับสีแม้ว่าเทอร์มินัลจะไม่รองรับหรือเอาต์พุตถูกเปลี่ยนเส้นทางไปยังที่ไม่ใช่เทอร์มินัล void rang::setWinTermMode (rang::winTerm);
โดยที่ rang::winTerm
ใช้เวลา
winTerm::Auto
- ตรวจสอบหน้าต่างใหม่และเลือก Ansi มิฉะนั้นจะกลับไปเป็น Native ( ค่าเริ่มต้น )winTerm::Native
- วิธีการนี้รองรับใน windows ทุกรุ่น แต่รองรับแอตทริบิวต์น้อยกว่าwinTerm::Ansi
- วิธีการนี้รองรับใน windows เวอร์ชันใหม่กว่าและรองรับคุณสมบัติที่หลากหลายคุณลักษณะที่รองรับและความเข้ากันได้มีดังต่อไปนี้ -
ลักษณะข้อความ :
รหัส | Linux/Win/อื่นๆ | วินเก่า |
---|---|---|
rang::style::bold | ใช่ | ใช่ |
rang::style::dim | ใช่ | เลขที่ |
rang::style::italic | ใช่ | เลขที่ |
rang::style::underline | ใช่ | เลขที่ |
rang::style::blink | เลขที่ | เลขที่ |
rang::style::rblink | เลขที่ | เลขที่ |
rang::style::reversed | ใช่ | ใช่ |
rang::style::conceal | อาจจะ | ใช่ |
rang::style::crossed | ใช่ | เลขที่ |
สีข้อความ :
รหัส | Linux/Win/อื่นๆ | วินเก่า |
---|---|---|
rang::fg::black | ใช่ | ใช่ |
rang::fg::red | ใช่ | ใช่ |
rang::fg::green | ใช่ | ใช่ |
rang::fg::yellow | ใช่ | ใช่ |
rang::fg::blue | ใช่ | ใช่ |
rang::fg::magenta | ใช่ | ใช่ |
rang::fg::cyan | ใช่ | ใช่ |
rang::fg::gray | ใช่ | ใช่ |
สีพื้นหลัง :
รหัส | Linux/Win/อื่นๆ | วินเก่า |
---|---|---|
rang::bg::black | ใช่ | ใช่ |
rang::bg::red | ใช่ | ใช่ |
rang::bg::green | ใช่ | ใช่ |
rang::bg::yellow | ใช่ | ใช่ |
rang::bg::blue | ใช่ | ใช่ |
rang::bg::magenta | ใช่ | ใช่ |
rang::bg::cyan | ใช่ | ใช่ |
rang::bg::gray | ใช่ | ใช่ |
สีพื้นหน้าสดใส :
รหัส | Linux/Win/อื่นๆ | วินเก่า |
---|---|---|
rang::fgB::black | ใช่ | ใช่ |
rang::fgB::red | ใช่ | ใช่ |
rang::fgB::green | ใช่ | ใช่ |
rang::fgB::yellow | ใช่ | ใช่ |
rang::fgB::blue | ใช่ | ใช่ |
rang::fgB::magenta | ใช่ | ใช่ |
rang::fgB::cyan | ใช่ | ใช่ |
rang::fgB::gray | ใช่ | ใช่ |
สีพื้นหลังสดใส :
รหัส | Linux/Win/อื่นๆ | วินเก่า |
---|---|---|
rang::bgB::black | ใช่ | ใช่ |
rang::bgB::red | ใช่ | ใช่ |
rang::bgB::green | ใช่ | ใช่ |
rang::bgB::yellow | ใช่ | ใช่ |
rang::bgB::blue | ใช่ | ใช่ |
rang::bgB::magenta | ใช่ | ใช่ |
rang::bgB::cyan | ใช่ | ใช่ |
rang::bgB::gray | ใช่ | ใช่ |
รีเซ็ตรูปแบบ/สี :
รหัส | Linux/Win/อื่นๆ | วินเก่า |
---|---|---|
rang::style::reset | ใช่ | ใช่ |
rang::fg::reset | ใช่ | ใช่ |
rang::bg::reset | ใช่ | ใช่ |
ตรวจสอบค่าของตัวแปร env TERM
จากนั้นเปิดปัญหาที่นี่ และอย่าลืมพูดถึงคุณค่าของ TERM
พร้อมกับชื่อเทอร์มินัลของคุณ
cout
/ cerr
/ clog
rdbuf? Rang จะไม่รบกวนหากคุณพยายามเปลี่ยนเส้นทาง cout
/ cerr
/ clog
ไปยังที่อื่นและปล่อยให้ผู้ใช้ห้องสมุดเป็นผู้ตัดสินใจ ตรวจสอบให้แน่ใจว่าคุณได้อ่านบทสนทนานี้แล้วและดูโค้ดตัวอย่างที่นี่