2013-12-22 165 views
0

使用「system」命令更改我的控制檯中的背景和文本顏色。在C和C++中更改控制檯輸出的背景顏色

#include <iostream> 

using namespace std; 

int main() 
{ 
system ("color 1a"); 
cout <<"Hello World"; 

cin.ignore(); 
return 0; 
} 

有沒有辦法只改變一行的顏色? C或C++都很好。 謝謝。

+2

確實有比系統命令更好的方法,但它將取決於平臺,您沒有提及您使用的平臺。 –

回答

4

我假定您使用的是Windows,因爲您的system()函數正在執行color這是Windows的控制檯實用程序。

如果你打算寫你的Windows程序,並要更改文本和/或背景的顏色,使用這樣的:

SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), attr); 

哪裏attr是值與|(位或運算符的組合),選擇是否要更改前景色或背景色。寫入控制檯的下一個功能(例如printf())適用更改。關於如何編碼attr說法,這裏

詳情: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682088%28v=vs.85%29.aspx#_win32_character_attributes

例如,該程序輸出「Hello World」使用黃色文字(紅+綠+強度)在藍色的背景,與Windows的計算機2000或更高:

#include <stdio.h> 
#include <windows.h> 

int main() 
{ 
    SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | 
                  FOREGROUND_GREEN | 
                  FOREGROUND_INTENSITY | 
                  BACKGROUND_BLUE 
         ); 
    printf ("Hello world\n"); 
    return 0; 
} 

該另一顯示示出了用於前景和背景顏色的所有組合的彩色圖表:

#include <stdio.h> 
#include <windows.h> 

int main() 
{ 
    unsigned char b,f; 

    for (b=0;b<16;b++) 
    { 
    for (f=0;f<16;f++) 
    { 
     SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), b<<4 | f); 
     printf ("%.2X", b<<4 | f); 
    } 
    printf ("\n"); 
    } 
    SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), 0x07); 
    printf ("\n"); 
    return 0; 
}