c++11 标准模板(STL)本地化库 - 平面类别(std::numpunct) - 定义数值标点规则

news2024/11/24 13:53:40

本地化库

本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C++ 标准库的其他组件的行为。

平面类别

定义数值标点规则

std::numpunct

template< class CharT >
class numpunct;

平面 std::numpunct 封装数值标点偏好。流 I/O 操作通过 std::num_get 和 std::num_put ,将用 std::numpunct 用于剖析数值输入,和格式化数值输出。

std::numpunct 所支持的数字拥有后述格式。此处 digit 表示 fmtflags 参数值所指定的基底集, thousands-sepdecimal-point 分别为 thousands_sep() 和 decimal_point() 函数的结果。整数值格式如下:

integer     ::= [sign] units
sign        ::= plusminus
plusminus   ::= '+' | '-'
units       ::= digits [thousands-sep units]
digits      ::= digit [digits]

thousand-sep 之间的数位( digits 的最大大小)由 grouping() 的结果指定。

浮点值格式如下:

floatval    ::= [sign] units [decimal-point [digits]] [e [sign] digits] |
                [sign]        decimal-point  digits   [e [sign] digits]
e           ::= 'e' | 'E'

继承图

标准库提供二个孤立(独立于本地环境)的特化:

定义于头文件 <locale>

std::numpunct<char>提供 "C" 本地环境偏好的等价版本
std::numpunct<wchar_t>提供 "C" 本地环境偏好的宽字符等价版本

另外, C++ 程序中构造的每个 locale 对象实现这些特化的其自身(本地环境限定)版本。

成员类型

成员类型定义
char_typecharT
string_typestd::basic_string<charT>

成员函数

(构造函数)

构造新的 numpunct 平面
(公开成员函数)

(析构函数)

析构 numpunct 平面
(受保护成员函数)

decimal_point

调用 do_decimal_point
(公开成员函数)

thousands_sep

调用 do_thousands_sep
(公开成员函数)

grouping

调用 do_grouping
(公开成员函数)

truenamefalsename

调用 do_truenamedo_falsename
(公开成员函数)

受保护成员函数

do_decimal_point

[虚]

提供用作小数点的字符
(虚受保护成员函数)

do_thousands_sep

[虚]

提供用作千分隔符的字符
(虚受保护成员函数)

do_grouping

[虚]

提供一对千分隔符之间的位数
(虚受保护成员函数)

do_truenamedo_falsename

[虚]

提供用作布尔 true 和 false 名称的字符串
(虚受保护成员函数)

成员对象

static std::locale::id id

locale 的 id
(公开成员对象)

 

调用示例 windows

#include <iostream>
#include <locale>

struct french_bool : std::numpunct<char>
{
    string_type do_truename() const
    {
        return "oui";
    }

    string_type do_falsename() const
    {
        return "non";
    }
};

int main()
{
    std::cout << "default locale: "
              << std::boolalpha << true << ", " << false << std::endl;

    std::cout.imbue(std::locale(std::cout.getloc(), new french_bool));

    std::cout << "locale with modified numpunct: " << std::endl
              << std::boolalpha
              << "do_truename:  " << true << std::endl
              << "do_falsename: " << false << std::endl;

    return 0;
}

输出

default locale: true, false
locale with modified numpunct:
do_truename:  oui
do_falsename: non

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】一道字典题目

题目&#xff1a;输入一段文本&#xff0c;统计每个字符的个数 in_inputinput(“输入&#xff1a;”) dic{} for char in in_input: if char in dic: dic[char]1 # 字典添加键值对的方法&#xff0c;给字典给键和值的方法 else: dic[char]1 print(dic) 输出台&#xff1a;

PY计算生态是什么?

Python 的计算生态指的是与 Python 相关的广泛的软件、库、框架和工具集合. 它们为各种计算任务提供了丰富的解决方案和支持。Python 作为一种简洁、易学、功能强大的编程语言&#xff0c;在科学计算、数据分析、人工智能、机器学习等领域都有着强大的影响力。以下是 Python 计…

有哪些有效的复习方法可以帮助备考软考?

软考目前仍然是一个以记忆为主、理解为辅的考试。学过软考的朋友可能会感到困惑&#xff0c;因为软考的知识在日常工作中有许多应用场景&#xff0c;需要理解的地方也很多。但为什么我说它是理解为辅呢&#xff1f;因为这些知识点只要记住了&#xff0c;都不难理解&#xff0c;…

程序员离不开的8款开发软件(必备)

在数字化时代&#xff0c;程序员扮演着关键的角色&#xff0c;他们的工作不仅仅是编写代码&#xff0c;更是创造了无限可能的世界。而要让这个创造过程更加高效和愉悦&#xff0c;选择适合自己的开发工具和软件是至关重要的。 今天&#xff0c;我将为大家介绍一些程序员爱不释…

数字孪生涉及到的前沿技术:虚拟现实 人工智能 区块链 边缘计算。

数字孪生是各类技术的综合应用&#xff0c;除了咱们常见的传感器、数据采集、清洗、传输、建模、可视化技术外&#xff0c;还有还有一些前沿技术&#xff0c;会让数字孪生更加强大和智能&#xff0c;本文介绍几个。 虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#x…

浅谈C++ overload(重载) override(覆盖) overwrite(重写)

目录 1. 名词辨析2 含义解析1 overload重载2 override覆盖3 overwrite重写 3 区别4 代码示例 1. 名词辨析 关于这3个名词的中文翻译&#xff1a; overload翻译为重载&#xff0c;基本是没有歧义的&#xff1b;override和overwrite的翻译&#xff0c;我在参考了cppreference中…

华为OD机试【告警抑制】(java)(100分)

1、题目描述 告警抑制&#xff0c;是指高优先级告警抑制低优先级告警的规则。 高优先级告警产生后&#xff0c;低优先级告警不再产生。 请根据原始告警列表和告警抑制关系&#xff0c;给出实际产生的告警列表。 不会出现循环抑制的情况。 告警不会传递&#xff0c;比如A ->…

OV证书——企业网站的第一选择

据官方数据统计&#xff0c;从2024年开始OV证书的签发量远远超过DV证书的签发量&#xff0c;越来越多的企业网站摒弃了基础的DV证书&#xff0c;选择更高级别的OV证书。 但是其价格相对于DV证书来说要高几百甚至上千元&#xff0c;这里推荐性价比很高的JoySSL&#xff0c;他们…

北交所佣金费率标准是多少?北交所相关信息科普

北交所的佣金费率并非固定不变&#xff0c;而是可以根据投资者的需求和证券公司的政策进行调整。目前北交所的佣金费率最低是万分之二。 一般来说&#xff0c;北交所的佣金费率默认在万分之三左右&#xff0c;但这不是固定的费率。根据证券公司的不同&#xff0c;佣金费率可以…

六西格玛项目的核心要素:理论学习、实践应用与项目经验

许多朋友担心&#xff0c;没有项目经验是否就意味着无法考取六西格玛证书。针对这一疑问&#xff0c;张驰咨询为大家详细解答。 首先&#xff0c;需要明确的是&#xff0c;六西格玛项目不仅仅是一种管理工具或方法&#xff0c;更是一种追求卓越、持续改进的思维方式。它强调通…

拿到B端系统设计需求该如何入手,这样做准没错!

在拿到B端系统设计需求后&#xff0c;以下是一些入手的步骤和方法&#xff1a; 理解需求 首先&#xff0c;仔细阅读和理解所提供的需求文档。了解系统的目标、功能需求、用户需求、非功能需求等方面的要求。如果有任何不清楚或模糊的地方&#xff0c;及时与需求提出方进行沟通…

LeetCode--所有质数、质数对

1.0 Q: 输出 100 以内所有质数 1.1 /* 第一层循环控制检查到哪个数* 第二层通过遍历除以每个比他小的数的方式,检查每个数是不是质数* 由于要遍历检查,设置一个标记,只要任意一次循环可以整除,我们就设置该标记为不是质数 */boolean isPrime true;for (int i 2; i < 100…

git commit后发现git pull 拉取代码失败的解决方案(致命错误:需要指定如何调和偏离的分支。)

文章目录 前言一、情况复现1.以前多人开发同一分支提交代码逻辑(下拉取后提交)2.报错 二、解决方案1. 撤销最近一次提交2.提交代码3.注意点&#xff1a;常用的 git stash 命令&#xff1a; 前言 人员张三和人员李四在同一分支&#xff08;dev&#xff09;上开发 一、情况复现 …

Redis(安装及配置)

1.什么是redis Redis 全称 Remote Dictionary Server&#xff08;即远程字典服务&#xff09;&#xff0c;它是一个基于内存实现的键值型非关系&#xff08;NoSQL&#xff09;数据库&#xff0c;由意大利人 Salvatore Sanfilippo 使用 C 语言编写。 2.优势 性能极高&#xff…

Elasticsearch的使用

Elasticsearch 1、认识和安装 Elasticsearch的官方网站如下&#xff1a; https://www.elastic.co/cn/elasticsearch Elasticsearch是由elastic公司开发的一套搜索引擎技术&#xff0c;它是elastic技术栈中的一部分。完整的技术栈包括&#xff1a; Elasticsearch&#xff1…

AI换脸原理(6)——人脸分割介绍

一、介绍 人脸分割是计算机视觉和图像处理领域的一项重要任务,它主要涉及到将图像中的人脸区域从背景或其他非人脸区域中分离出来。这一技术具有广泛的应用场景,如人脸识别、图像编辑、虚拟背景替换等。 在计算机视觉(CV)领域,经典的分割技术可以主要划分为三类:语义分…

UBoat:一款功能强大的HTTP Botnet学习与研究工具

关于UBoat UBoat是一款功能强大的HTTP Botnet概念验证工具&#xff0c;该工具支持复刻一个现实场景中完整功能的Botnet测试环境&#xff0c;广大研究人员可以利用UBoat深入学习和研究Botnet的工作机制&#xff0c;以此来提升安全检测和保护策略。 功能介绍 1、基于C开发&…

隐式3D形状表示:Occupancy Networks

OccNet 的关键思想是隐式地表示3D形状&#xff0c;而不是显式地表示。与直接编码形状几何信息不同&#xff0c;OccNet 将形状的表面建模为非线性分类器的决策边界。 隐式表示&#xff1a;Occupancy Networks 将 3D 形状表示为非线性分类器函数的决策边界 f θ : R 3 X → [ 0…

从开发角度理解漏洞成因(03)

文章目录 JS前端验证 - 文件上传设计浏览器禁用JS&#xff0c;前端绕过文件上传漏洞验证漏洞 Ajax 登录验证&#xff0c;状态回显&#xff0c;状态码设计修改返回包绕过登录验证 通过Ajax 传递数据进行购物验证设计1此漏洞也可以修改状态码绕过 持续更新中… 文章中代码资源已上…

Gitlab自动化测试的配置

1. 代码分支命名规范检测 Setting → Repository → Push rules → Branch name&#xff0c;添加分支命名规范对应的正则表达式。如&#xff1a; ^(Release|Tag|Develop|Feature)_._.|Main$ 表示分支名只能以以下关键字之一开头&#xff1a;Release、Tag、Develop和Feature。 …