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

本文主要是介绍c++11 标准模板(STL)本地化库 - 平面类别(std::numpunct) - 定义数值标点规则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本地化库

本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 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

这篇关于c++11 标准模板(STL)本地化库 - 平面类别(std::numpunct) - 定义数值标点规则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/970058

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

使用Java填充Word模板的操作指南

《使用Java填充Word模板的操作指南》本文介绍了Java填充Word模板的实现方法,包括文本、列表和复选框的填充,首先通过Word域功能设置模板变量,然后使用poi-tl、aspose-words... 目录前言一、设置word模板普通字段列表字段复选框二、代码1. 引入POM2. 模板放入项目3.代码

Python之变量命名规则详解

《Python之变量命名规则详解》Python变量命名需遵守语法规范(字母开头、不使用关键字),遵循三要(自解释、明确功能)和三不要(避免缩写、语法错误、滥用下划线)原则,确保代码易读易维护... 目录1. 硬性规则2. “三要” 原则2.1. 要体现变量的 “实际作用”,拒绝 “无意义命名”2.2. 要让

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

深入浅出Java中的Happens-Before核心规则

《深入浅出Java中的Happens-Before核心规则》本文解析Java内存模型中的Happens-Before原则,解释其定义、核心规则及实际应用,帮助理解多线程可见性与有序性问题,掌握并发编程... 目录前言一、Happens-Before是什么?为什么需要它?1.1 从一个问题说起1.2 Haht

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法