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