在 C 中将布尔值打印到输出流时,该标准为显示结果提供了指导。
默认情况下,std::cout 将 bool 值显示为整数,0 代表 false,1 代表 true。但是, std::boolalpha 操纵器修改了此行为,指示流将布尔值显示为字符串: false 和 true。
要启用此更改,请使用 std::cout
<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; }</code>
该标准还允许布尔值的本地化表示。通过为流注入适当的区域设置,您可以打印以其他语言显示的布尔值。例如,在法语中,boolalpha 将显示 faux 和 vrai,而不是 false 和 true。
要使用此功能,请为流注入支持所需语言的区域设置:
<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 Facet。这将允许您定义为 true 和 false 值显示的确切字符串。
以下是法语示例:
<code class="cpp">#include <array> #include <string> #include <locale> #include <ios> #include <iostream> 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; }</code>
以上是如何在 C 中将布尔值打印为字符串而不是整数?的详细内容。更多信息请关注PHP中文网其他相关文章!