5

ブール値のカウントによって生成された出力をどのように大文字にしますか。

私がした場合、私はそれを知っています:

cout << boolalpha << true;

それは出力します

true

出力するにはどうすればよいですか

True

do_truename と do_falsename に関係があると感じていますが、どうすればよいかわかりません。

4

1 に答える 1

7

つかの間、これは を使用して実行できると思いましたstd::uppercaseが、そうではないようです。これらは、16 進数や指数などにのみ適用されます。したがって、確かに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";
}
于 2012-11-28T01:15:08.677 に答える