Windows命令提示符中

Windows命令提示符中

我想在Windows命令提示符中更改特定单词的颜色,它的工作方式就很好了:

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

using namespace std;

string setcolor(unsigned short color){
    HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hcon, color);
    return "";
}

int main(int argc, char** argv)
{
    setcolor(13);
    cout << "Hello ";
    setcolor(11);
    cout << "World!" << endl;
    setcolor(7);
    system("PAUSE");
    return 0;
}


但是我希望我的功能像这样

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

using namespace std;

string setcolor(unsigned short color){
    HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hcon, color);
    return "";
}

int main(int argc, char** argv)
{
    cout << setcolor(13) << "Hello " << setcolor(50) << "World!" << setcolor(7) << endl;
    system("PAUSE");
    return 0;
}


当我运行它时,只有setcolor(13)起作用,然后颜色永远都不会改变,直到结束,我该怎么做才能解决此问题

最佳答案

我的评论可能是错误的,使用I / O机械手(例如std::setw和family)可能是可能的:

struct setcolor
{
    int color;
    setcolor(int c) : color(c) {}
    std::ostream& operator()(std::ostream& os)
    {
        HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(hcon, color);
        return os;
    }
};


像以前一样使用它:

std::cout << "Hello " << setcolor(50) << "world\n";


注意:我不知道这是否行得通,因为我还没有测试过。



现在,您当前代码的问题(如问题所示)是setcolor是返回字符串的普通函数,您只需调用函数并打印其返回值(空字符串)即可。

关于c++ - Windows命令提示符中的彩色文本在一行中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27400292/

10-17 02:27