2017-02-20 70 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