如何利用布尔值的cout生成的输出大写.
我知道如果我这样做:
cout << boolalpha << true;
它会输出
true
我如何让它输出
True
我有一些感觉它与do_truename和do_falsename有关,但我不知道如何做到这一点.
对于稍纵即逝的时刻,我认为这可以使用,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";
}
Run Code Online (Sandbox Code Playgroud)