首页 > 后端开发 > C++ > 正文

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

Patricia Arquette
发布: 2024-10-28 09:03:02
原创
633 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!