如何将布尔值的cout生成的输出大写。
我知道如果我这样做了:
cout << boolalpha << true;
将输出
true
如何输出
True
我有一些感觉它与do_truename和do_falsename有关,但我不知道该怎么做。
答案 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";
}