C で出力ストリームにブール値を出力する場合、標準では表示結果のガイドラインが提供されています。
デフォルトでは、std::cout は bool 値を整数として表示します。0 は false を表し、1 は true を表します。ただし、std::boolalpha マニピュレータはこの動作を変更し、ブール値を文字列 (false と true) として表示するようにストリームに指示します。
この変更を有効にするには、std::cout << を使用します。 std::boolalpha;:
<code class="cpp">#include <iostream> #include <iomanip> int main() { std::cout << false << "\n"; // Prints 0 std::cout << std::boolalpha; std::cout << false << "\n"; // Prints false return 0; }
この標準では、ブール値のローカライズされた表現も許可されています。ストリームに適切なロケールを組み込むことにより、ブール値を他の言語で表示されるとおりに出力できます。たとえば、フランス語では、boolalpha は false と true の代わりに faux と vrai を表示します。
この機能を使用するには、目的の言語をサポートするロケールをストリームに埋め込みます:
<code class="cpp">#include <iostream> #include <iomanip> #include <locale> int main() { std::cout.imbue(std::locale("fr")); std::cout << false << "\n"; // Prints 0 std::cout << std::boolalpha; std::cout << false << "\n"; // Prints faux return 0; }
ブール値の表現を正確に制御する必要がある場合は、カスタム std::numpunct ファセットを作成できます。これにより、true 値と false 値として表示される正確な文字列を定義できます。
フランス語の例を次に示します:
#include
#include
#include
#include
#include
class my_fr : public std::numpunct< char > {
protected:
char do_decimal_point() const { return ','; }
char do_thousands_sep() const { return '.'; }
std::string do_grouping() const { return ""; }
std::string do_truename() const { return "vrai"; }
std::string do_falsename() const { return "faux"; }
};
int main() {
std::cout.imbue(std::locale(std::locale(), new my_fr));
std::cout << false << "\n"; // Prints 0
std::cout << std::boolalpha;
std::cout << false << "\n"; // Prints faux
return 0;
}以上がC でブール値を整数ではなく文字列として出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。