C ++ দিয়ে কনসোলে পাঠ্য রঙিন করা হচ্ছে


99

আমি কীভাবে সি ++ দিয়ে কনসোলে রঙিন পাঠ্য লিখতে পারি? অর্থাত্, আমি কীভাবে বিভিন্ন রঙ সহ বিভিন্ন পাঠ্য লিখতে পারি?


সি ++ কনসোলে বিভিন্ন রঙ খুঁজে পাওয়ার কোনও সংস্থান নেই তবে :)
সুদানাথ

4
সি ++ কনসোল কি ??
এডওয়ার্ড স্ট্রেঞ্জ

সম্ভাব্য সদৃশ: stackoverflow.com/questions/3585846/...
karlphillip

এই উত্তরগুলি সম্পর্কে সতর্কতা অবলম্বন করুন। আপনি যদি সেগুলিকে নিজের কাছে ফিরিয়ে না আনেন তবে প্রোগ্রামটি প্রস্থান করার পরে আপনার কনসোলে পরিবর্তন হবে।
kayleeFrye_onDeck

উত্তর:


123

আপনার কনসোল পাঠ্যে একটি সামান্য রঙ যুক্ত করুন

  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  // you can loop k higher to see more color choices
  for(int k = 1; k < 255; k++)
  {
    // pick the colorattribute k you want
    SetConsoleTextAttribute(hConsole, k);
    cout << k << " I want to be nice today!" << endl;
  }

বিকল্প পাঠ

চরিত্রের বৈশিষ্ট্য এখানে "কে" মান কীভাবে ব্যাখ্যা করা যায় তা।


41
মনে রাখবেন এটি কেবল উইন্ডোজ।
ডার্কডাস্ট

4
আমি যদি এক লাইনে বেশ কয়েকটি রঙ যুক্ত করতে চাই তবে?
ফাদওয়া

4
@ মিসাকি আমি পরীক্ষা করিনি তবে আপনি কি 'এন্ডল' বিটটি সরিয়ে দেওয়ার চেষ্টা করতে পারেন?
শীণ

4
হ্যান্ডেল ক্লাস জানার জন্য আমার কোন লাইব্রেরি অন্তর্ভুক্ত করা উচিত?
এসটিএফ

4
@STF শুধু ব্যবহার <windows.h>
শিন

36

এএনএসআই এস্কেপ কোডের কোড:

Name            FG  BG
Black           30  40
Red             31  41
Green           32  42
Yellow          33  43
Blue            34  44
Magenta         35  45
Cyan            36  46
White           37  47
Bright Black    90  100
Bright Red      91  101
Bright Green    92  102
Bright Yellow   93  103
Bright Blue     94  104
Bright Magenta  95  105
Bright Cyan     96  106
Bright White    97  107

সি / সি ++ এর জন্য নমুনা কোড:

#include <iostream>
#include <string>

int main(int argc, char ** argv){
    
    printf("\n");
    printf("\x1B[31mTexting\033[0m\t\t");
    printf("\x1B[32mTexting\033[0m\t\t");
    printf("\x1B[33mTexting\033[0m\t\t");
    printf("\x1B[34mTexting\033[0m\t\t");
    printf("\x1B[35mTexting\033[0m\n");
    
    printf("\x1B[36mTexting\033[0m\t\t");
    printf("\x1B[36mTexting\033[0m\t\t");
    printf("\x1B[36mTexting\033[0m\t\t");
    printf("\x1B[37mTexting\033[0m\t\t");
    printf("\x1B[93mTexting\033[0m\n");
    
    printf("\033[3;42;30mTexting\033[0m\t\t");
    printf("\033[3;43;30mTexting\033[0m\t\t");
    printf("\033[3;44;30mTexting\033[0m\t\t");
    printf("\033[3;104;30mTexting\033[0m\t\t");
    printf("\033[3;100;30mTexting\033[0m\n");

    printf("\033[3;47;35mTexting\033[0m\t\t");
    printf("\033[2;47;35mTexting\033[0m\t\t");
    printf("\033[1;47;35mTexting\033[0m\t\t");
    printf("\t\t");
    printf("\n");

    return 0;
}

জিসিসি:

g++ cpp_interactive_terminal.cpp -o cpp_interactive_terminal.cgi
chmod +x cpp_interactive_terminal.cgi
./cpp_interactive_terminal.cgi

4
@Mehdi Mohammadpour আমি উইন্ডোজ 10, এবং আপনার পালাবার কোড রয়েছে করছে আমার জন্য কাজ, কিন্তু এটা যে আপনার ফোরগ্রাউন্ড পেয়েছেন এবং পৃষ্ঠভূমি কোড বিপরীত আমাকে বলে মনে হচ্ছে। আপনি দয়া করে 'এফজি' এবং 'বিজি' শিরোনামগুলি উল্টাতে পারেন?
ইয়ামেক্স 5

আমাকে @ ইয়ামেক্স 5
22

হাই ইয়ামেক্স 5 এবং স্মুথওয়্যার, ধন্যবাদ, ঠিক আছে
মেহেদী মোহাম্মদপুর

23

স্ট্যান্ডার্ড সি ++ এর 'রঙের' ধারণা নেই। সুতরাং আপনি যা জিজ্ঞাসা করছেন তা অপারেটিং সিস্টেমের উপর নির্ভর করে।

উইন্ডোজের জন্য, আপনি সেটকনসোলটেক্সটঅ্যাট্রিবিউট ফাংশনটি পরীক্ষা করে দেখতে পারেন ।

* নিক্সে, আপনাকে এএনএসআই এস্কেপ সিকোয়েন্সগুলি ব্যবহার করতে হবে ।


4
নোট করুন যে এএসএনআই সিকোয়েন্সগুলি (বা তাদের কয়েকটি অন্তত) উইন্ডোজের সিএমডি.এক্সই-তেও কাজ করে।
ফান্ড মনিকার লসুইট

4
@ আসু, তারা উইন 10 বার্ষিকী সংস্করণের আগে নেই। আপনার উইন 10 যদি আমাদের আপ টু ডেট থাকে তবে আপনার কাছে তা রয়েছে।
kayleeFrye_onDeck

7

আপনি পদ্ধতি লিখতে পারেন এবং কল করতে পারেন


HANDLE  hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int col=12;

// color your text in Windows console mode
// colors are 0=black 1=blue 2=green and so on to 15=white  
// colorattribute = foreground + background * 16
// to get red text on yellow use 4 + 14*16 = 228
// light red on yellow would be 12 + 14*16 = 236

FlushConsoleInputBuffer(hConsole);
SetConsoleTextAttribute(hConsole, col);

cout << "Color Text";

SetConsoleTextAttribute(hConsole, 15); //set back to black background and white text

4
মনে রাখবেন যে, SetConsoleTextAttribute(hConsole, 15);সেট রঙ উজ্জ্বল সাদা , না হোয়াইট7 - সাদা। এবং 15 - উজ্জ্বল সাদা
GooDeeJaY

5

উইন্ডোজ 10 এ আপনি এইভাবে পালানোর সিকোয়েন্সগুলি ব্যবহার করতে পারেন:

#ifdef _WIN32
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), ENABLE_VIRTUAL_TERMINAL_PROCESSING);
#endif
// print in red and restore colors default
std::cout << "\033[32m" << "Error!" << "\033[0m" << std::endl;

4

ধরে নিই যে আপনি উইন্ডোজ কনসোল উইন্ডোর কথা বলছেন, এমএসডিএন লাইব্রেরি ডকুমেন্টেশনে কনসোল ফাংশনগুলি সন্ধান করুন।

অন্যথায়, বা আরও সাধারণভাবে, এটি কনসোলের উপর নির্ভর করে। রঙগুলি সি ++ লাইব্রেরি দ্বারা সমর্থিত নয়। তবে কনসোল হ্যান্ডলিংয়ের জন্য একটি লাইব্রেরি রঙগুলি সমর্থন করতে পারে / করবে। উদাহরণস্বরূপ গুগল "রঙের রঙে"।

সংযুক্ত সিরিয়াল টার্মিনাল এবং টার্মিনাল এমুলেটরগুলির জন্য আপনি "এস্কেপ সিকোয়েন্সগুলি" আউটপুট করে জিনিসগুলি নিয়ন্ত্রণ করতে পারেন। এগুলি সাধারণত ASCII 27 (ASCII- এ পালানোর চরিত্র) দিয়ে শুরু হয়। একটি এএনএসআই মানক এবং প্রচুর কাস্টম স্কিম রয়েছে।


যেহেতু উত্তরটি লেখা হয়েছিল, উইন্ডোজ 10 সংকীর্ণ কনসোল স্ট্রিমের জন্য এএনএসআই পলায়ন ক্রমগুলির জন্য সমর্থন অর্জন করেছিল।
চিয়ার্স এবং এইচটিএইচ - Alf

2

আপনি সত্যিই কী করতে চান তা আমি নিশ্চিত নই, তবে আমার ধারণা আপনি কি আপনার সি ++ প্রোগ্রামটি কনসোলে রঙিন পাঠ্য আউটপুট করতে চান, তাই না? উইন্ডোজ সম্পর্কে জানেন না, তবে সমস্ত ইউনিসে (ম্যাক ওএস এক্স সহ), আপনি কেবল এএনএসআই এস্কেপ সিকোয়েন্সগুলি ব্যবহার করতে পারেন।


2

উইন্ডোজে আপনি অগ্রভাগ (পাঠ্য) এবং পটভূমিতে লাল সবুজ এবং নীল যে কোনও সংমিশ্রণ ব্যবহার করতে পারেন।

/* you can use these constants
FOREGROUND_BLUE
FOREGROUND_GREEN
FOREGROUND_RED
FOREGROUND_INTENSITY
BACKGROUND_BLUE
BACKGROUND_GREEN
BACKGROUND_RED
BACKGROUND_INTENSITY
*/

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
std::cout << "I'm cyan! Who are you?" << std::endl;

সূত্র: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682088(v=vs.85).aspx#_win32_character_attributes


2

আপনি যা করতে পারেন তার সহজ উপায় হ'ল:

#include <stdlib.h>

system("Color F3");

যেখানে "এফ" হ'ল ব্যাকগ্রাউন্ড রঙের কোড এবং 3 পাঠ্যের রঙের কোড।

অন্যান্য রঙের সংমিশ্রণগুলি দেখতে এর সাথে জগাখিচুড়ি:

system("Color 1A");
std::cout << "Hello, what is your name?" << std::endl;
system("Color 3B");
std::cout << "Hello, what is your name?" << std::endl;
system("Color 4c");
std::cout << "Hello, what is your name?" << std::endl;

দ্রষ্টব্য: আমি কেবল উইন্ডোজে পরীক্ষা করেছি। কাজ। যেমন উল্লেখ করা হয়েছে, এটি ক্রস প্ল্যাটফর্ম নয়, এটি লিনাক্স সিস্টেমে কাজ করবে না।


4
এটি একটি খারাপ পদ্ধতির! কোড ক্রস প্ল্যাটফর্ম নয়, এটি লিনাক্স সিস্টেমে কাজ করবে না
GooDeeJaY


0

আপনি যদি না চান তবে পুরো সিস্টেমটি রঙ দিয়ে পূর্ণ হবে "সিস্টেম (" রঙ… ")"। রঙিন পাঠ্য তৈরি করতে এটির স্ক্রিপ্টটি এটি:

#include <iostream>
#include <windows.h>

int main()
{
const WORD colors[] =
{
0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F,
0xA1, 0xB2, 0xC3, 0xD4, 0xE5, 0xF6
};

HANDLE hstdin = GetStdHandle(STD_INPUT_HANDLE);
HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
WORD   index = 0;


    SetConsoleTextAttribute(hstdout, colors[index]);
    std::cout << "Hello world" << std::endl;
FlushConsoleInputBuffer(hstdin);
return 0;
}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.