2017-02-20 71 views
-1

[這是我的第一篇文章。請不要吞噬我]沒有控制檯輸出的彩色文本?

嘿,偷看!

我很新(如短短几個小時),以C++

我沒有學過任何其他的「高」的語言呢,我做的大多數事情在Windows CMD, 和與它的是相當知現在控制檯,但缺乏功能驅使我在別的地方。因此,爲了學習C++,我目前正在使用Sololearn並且只是研究,剛剛從批處理中移植一些小的項目,我不想使用GUI或擴展,我正在使用CodeBlocks來完成控制檯應用。

現在我的問題;

我正要做着色文字整齊的功能,我修改了一個片段(這裏找到:Source)到這個位置:

void colorText(string ct, int col) 
{ 

    HANDLE hConsole; 
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 

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

     cout << ct; 

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

這實際上是工作好了, 與調用它

colorText("This my Text",12); 

例如, 芹苴,我得到它醜陋的控制檯輸出,它看起來像這樣:

CMD.EXE was started with the Path given above as the current Directory. 
UNC-Paths aren't supported. 
The Windows - Directory will be set as current Directory. 

現在,沒有任何人有一個想法如何避免這種情況,通過使用不同的技術爲着色,或靜音控制檯窗口?我也很感激,如果有人知道也許有些地方學習C++有點更專業,教程網站..

我很感激所有幫助,

真誠clragon

+0

我很確定這個輸出與顏色無關,只是由Code :: Blocks啓動終端的方式引起的。它是否也出現在簡單的「Hello World」上? – Quentin

+0

@Quentin不,實際上不是。 它的正常輸出是運行時間和「按任意鍵」 顏色功能添加上面的那些,我測試了通過評論該調用。 – clragon

+0

如果你想學習,不要從最糟糕的IDE開始。下載[Visual Studio Community](https://www.visualstudio.com/vs/community/)並從此處下載。 Code :: Blocks的默認設置較差,這是一種阻礙構建應用程序的傾向,而且幾乎不受支持。 – IInspectable

回答

0

GetStdHandle可能是返回與您正在運行的調試控制檯不兼容的句柄。在程序啓動時調用該函數並保持該句柄可能會更好。

+0

我剛剛嘗試過Visual Studio ...和哇。這實際上只是關於調試器。 Visual Studio絕對沒有問題,並且不會發生錯誤。感謝您的幫助 – clragon