首页  >  文章  >  后端开发  >  如何在 C 中将布尔值打印为字符串而不是整数?

如何在 C 中将布尔值打印为字符串而不是整数?

Patricia Arquette
Patricia Arquette原创
2024-10-28 09:03:02634浏览

How do I print boolean values in C   as strings instead of integers?

在 C 中打印布尔值:解码显示

在 C 中将布尔值打印到输出流时,该标准为显示结果提供了指导。

boolalpha 操纵器

默认情况下,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;
}

自定义 Numpunct Facet

如果您需要精确控制布尔值的表示,您可以创建自定义 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn