boolalpha大写

时间:2012-11-28 01:09:02

标签: c++

如何将布尔值的cout生成的输出大写。

我知道如果我这样做了:

cout << boolalpha << true;

将输出

true

如何输出

True

我有一些感觉它与do_truename和do_falsename有关,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:7)

对于稍纵即逝的时刻,我认为这可以使用std::uppercase完成,但似乎并非如此:这些仅适用于十六进制数字和指数等内容。因此,它似乎确实需要std::numpunct<char>覆盖,但这并不是那么糟糕:

#include <iostream>
#include <locale>

struct numpunct
    : std::numpunct<char>
{
    std::string do_truename() const { return "True"; }
    std::string do_falsename() const { return "False"; }
};

int main()
{
    std::locale loc(std::cout.getloc(), new numpunct);
    std::cout.imbue(loc);
    std::cout << std::boolalpha << true << "\n";
}