c++11 标准模板(STL)本地化库 - 平面类别(std::numpunct_byname) 表示系统提供的具名本地环境的 std::numpunct

本地化库

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

平面类别

表示系统提供的具名本地环境的 std::numpunct

std::numpunct_byname

template< class CharT >
class numpunct_byname : public std::numpunct<CharT>;

std::numpunct_byname 是 std::numpunct 平面,它封装在其构造时指定的 locale 的数值标点偏好。

标准库提供二个特化

定义于头文件 <locale>

std::numpunct_byname<char>窄字符 I/O 的本地环境限定 std::numpunct 平面
std::numpunct_byname<wchar_t>宽字符 I/O 的本地环境限定 std::numpunct 平面

成员类型

成员类型定义
char_typeCharT
string_typestd::basic_string<CharT>

成员函数

(构造函数)

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

(析构函数)

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

std::numpunct_byname::numpunct_byname

explicit numpunct_byname( const char* name, std::size_t refs = 0 );

explicit numpunct_byname( const std::string& name, std::size_t refs = 0 );

(C++11 起)

为名为 name 的本地环境构造新的 std::numpunct_byname 平面。

refs 用于资源管理:在销毁最后一个保有平面的 std::locale 对象时,若 refs == 0 ,则实现销毁平面对象。否则,不销毁对象。

参数

name-本地环境的名称
refs-链接到该平面的引用数

std::numpunct_byname::~numpunct_byname

protected:
~numpunct_byname();

销毁平面。

继承自 std::numpunct

成员类型

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

成员函数

decimal_point

调用 do_decimal_point
(std::numpunct<CharT> 的公开成员函数)

thousands_sep

调用 do_thousands_sep
(std::numpunct<CharT> 的公开成员函数)

grouping

调用 do_grouping
(std::numpunct<CharT> 的公开成员函数)

truenamefalsename

调用 do_truenamedo_falsename
(std::numpunct<CharT> 的公开成员函数)

受保护成员函数

do_decimal_point

[虚]

提供用作小数点的字符
(std::numpunct<CharT> 的虚受保护成员函数)

do_thousands_sep

[虚]

提供用作千分隔符的字符
(std::numpunct<CharT> 的虚受保护成员函数)

do_grouping

[虚]

提供一对千分隔符之间的位数
(std::numpunct<CharT> 的虚受保护成员函数)

do_truenamedo_falsename

[虚]

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

成员对象

static std::locale::id id

locale 的 id
(公开成员对象)

调用示例 windows

#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <iterator>
#include <exception>
#include <Windows.h>std::vector<std::wstring> locals;BOOL CALLBACK MyFuncLocaleEx(LPWSTR pStr, DWORD dwFlags, LPARAM lparam)
{locals.push_back(pStr);return TRUE;
}std::string stows(const std::wstring& ws)
{std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C";setlocale(LC_ALL, "chs");const wchar_t* _Source = ws.c_str();size_t _Dsize = 2 * ws.size() + 1;char *_Dest = new char[_Dsize];memset(_Dest, 0, _Dsize);wcstombs(_Dest, _Source, _Dsize);std::string result = _Dest;delete[]_Dest;setlocale(LC_ALL, curLocale.c_str());return result;
}struct numpunct_byname_my : std::numpunct_byname<char>
{explicit numpunct_byname_my(const char *_Locname, size_t _Refs = 0): numpunct_byname(_Locname, _Refs){// construct for named locale}explicit numpunct_byname_my(const std::string& _Str, size_t _Refs = 0): numpunct_byname(_Str.c_str(), _Refs){// construct for named locale}//提供用作千分隔符的字符char_type do_thousands_sep() const override{return ',';}//提供二个千分隔符间的位数string_type do_grouping()    const override{return "\003";}//提供用作小数点的字符char_type do_decimal_point() const override{return '.';}
};int main()
{std::cout << "default locale: "<< std::boolalpha << true << ", " << false << std::endl;EnumSystemLocalesEx(MyFuncLocaleEx, LOCALE_ALTERNATE_SORTS, NULL, NULL);for (std::vector<std::wstring>::const_iterator str = locals.begin();str != locals.end(); ++str){if (stows(*str) == "x-IV_mathan"){continue;}std::locale locale(stows(*str));std::cout.imbue(locale);std::cout << locale.name() << " ";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
de-DE_phoneb locale with modified numpunct:
do_truename:  true
do_falsename: false
es-ES_tradnl locale with modified numpunct:
do_truename:  true
do_falsename: false
hu-HU_technl locale with modified numpunct:
do_truename:  true
do_falsename: false
ja-JP_radstr locale with modified numpunct:
do_truename:  true
do_falsename: false
ka-GE_modern locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-CN_phoneb locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-CN_stroke locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-HK_radstr locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-MO_radstr locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-MO_stroke locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-SG_phoneb locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-SG_stroke locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-TW_pronun locale with modified numpunct:
do_truename:  true
do_falsename: false
zh-TW_radstr locale with modified numpunct:
do_truename:  true
do_falsename: false

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

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

相关文章

【Git】版本控制工具——Git介绍及使用

目录 版本控制版本控制系统的主要目标分类小结 分布式版本控制系统——GitGit特点Git与SVN的区别Git的工作机制 Git安装Git 团队协作机制团队内协作跨团队协作远程仓库远程仓库的作用有以下几个方面远程仓库操作流程/团队协作流程 Git分支什么是分支分支的好处 Git的常用命令Gi…

【热门话题】CentOS 常见命令指南

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 CentOS 常见命令指南一、文件与目录操作1. 切换目录2. 查看当前目录3. 列出目录…

周报5.20~5.26

学习内容&#xff1a; 主要了解了Qt的信号和槽、ui页面布局、各类常见控件的使用、绘图事件以及文件操作的相关知识&#xff0c;并且完成相关案例的设计。练习代码了解了多层感知机、激活函数、多项式回归、高维线性回归、暂退法、分布偏移、深度学习计算等相关知识与代码案例…

微信小程序中Button组件的属性值和用法详解

在微信小程序开发中&#xff0c;Button组件是非常常用的UI组件之一&#xff0c;它可以让用户进行交互操作&#xff0c;比如提交表单、跳转页面等。了解Button组件的属性值和用法对于开发者来说至关重要。 1. Button组件简介 简要介绍Button组件在小程序中的作用和重要性&…

SVM影像组学特征

近期做一个影像组学的分类模型 做的是一个胃癌T分期的模型&#xff0c;我刷选统计出一些胃癌区域的特征&#xff0c;如图&#xff1a;有癌症面积、体积等等 下面要做一个SVM&#xff08;支持向量机&#xff09;分类的模型&#xff0c;导入该文件&#xff0c;进行二分类&#x…

MFC密码对话框之间数据传送实例(源码下载)

新建一个login工程项目对话框&#xff0c;主对话框IDD_LOGIN_DIALOG中一个显示按钮IDC_BUTTON1、一个密码按钮IDC_BUTTON2。添加一个密码对话框IDD_DIALOG1&#xff0c;添加类password&#xff0c;在对话框中添加一个编辑框IDC_EDIT1、一个确定按钮IDC_BUTTON1。 程序功能&…

百度集团:AI重构,走到哪了?

内有自家公关一号“自曝”狼性文化&#xff0c;主动制造舆论危机。 外有&#xff0c;OpenAI、谷歌、字节、华为等大模型劲敌扎堆迭代新产品&#xff0c; 强敌环伺。 今天我们要说的是早就从BAT掉队的——百度。 最近&#xff0c;在武汉Aapollo Day 2024上&#xff0c;百度发布了…

抖音小店新规重磅来袭!事关店铺流量!商家的福音来了?

大家好&#xff0c;我是喷火龙。 就在前两天&#xff0c;抖店发布了新规&#xff0c;我给大家总结了一下&#xff0c;无非就是两点。 第一点&#xff1a;保证金下调&#xff0c;一证开多店。 第二点&#xff1a;新品上架破10单&#xff0c;有流量扶持。 咱来细细的解读&…

零基础HTML教程(34)--HTML综合实例

文章目录 1. 背景2. 开发流程2.1 网站功能设计2.2 建立网站目录结构2.3 开发首页2.2 生平简介页2.3 经典诗词页2.4 苏轼图集页2.5 留言板 3. 小结 1. 背景 通过前面33篇文章的学习&#xff0c;我们对HTML有了一个比较全面的了解。 本篇&#xff0c;我们编写一个网站实例&…

Unity在Windows平台播放HEVC/H.265格式视频的底层原理

相关术语、概念 HEVC/H.265 HEVC&#xff08;High Efficiency Video Coding&#xff09;是一种视频压缩标准&#xff0c;也被称为H.265。它是一种高效的视频编码标准&#xff0c;可以提供比之前的标准&#xff08;如H.264&#xff09;更高的压缩率&#xff0c;同时保持较高的…

Golang并发编程-协程goroutine初体验

文章目录 前言一、Goroutine适合的使用场景二、Goroutine的使用1. 协程初体验 三、WaitGroupWaitGroup 案例一WaitGroup 案例二 总结 前言 学习Golang一段时间了&#xff0c;一直没有使用过goroutine来提高程序执行效率&#xff0c;在一些特殊场景下&#xff0c;还是有必须开启…

Vue.js组件设计模式:构建可复用组件库

在Vue.js中&#xff0c;构建可复用的组件库是提高代码复用性和维护性的关键。下面是一些设计模式&#xff0c;说明如何创建可复用的Vue组件&#xff1a; 1. 单文件组件&#xff08;Single File Component, SFC&#xff09; Vue.js组件通常是单文件组件&#xff0c;包含HTML、…

ssm141餐厅点菜管理系统+vue

餐厅点菜管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管…

大数据之Hive函数大全

&#x1f527; Hive函数大全 更多大数据学习资料请关注公众号“大数据领航员"免费领取 一、数学函数 1、取整函数: round 1.函数描述 返回值语法结构功能描述doubleround(double a)返回double类型的整数值部分&#xff08;遵循四舍五入&#xff09; 2.例程 hive>…

YOLOv5/v7 引入 RepVGG 重参数化模块

YOLOv5/v7 中引入 RepVGG 重参数化模块 1. 介绍 RepVGG 是由 Megvii Research 团队于 2021 年提出的深度卷积神经网络架构&#xff0c;它通过重参数化 VGGNet 架构&#xff0c;显著提高了模型的性能和效率。RepVGG 架构在 YOLOv5 和 YOLOv7 等目标检测模型中得到了广泛应用&a…

自定义RedisTemplate序列化器

大纲 RedisSerializerFastJsonRedisSerializer自定义二进制序列化器总结代码 在《RedisTemplate保存二进制数据的方法》一文中&#xff0c;我们将Java对象通过《使用java.io库序列化Java对象》中介绍的方法转换为二进制数组&#xff0c;然后保存到Redis中。实际可以通过定制Red…

智能化让幼儿园管理更加规范

在各个学龄阶段&#xff0c;幼儿园一向都是家长的教师最为操心的&#xff0c;一方面幼儿园孩子自主才能差&#xff0c;安全问题需求分外注重&#xff0c;另一方面&#xff0c;幼儿园孩子年纪小、缺少必定的认知才能和区分才能&#xff0c;需求加强引导。 那么怎么进步幼儿园孩子…

D60SB120-ASEMI整流桥D60SB120参数、封装、尺寸

编辑&#xff1a;ll D60SB120-ASEMI整流桥D60SB120参数、封装、尺寸 型号&#xff1a;D60SB120 品牌&#xff1a;ASEMI 封装&#xff1a;D-SB 批号&#xff1a;2024 最大重复峰值反向电压&#xff1a;1200V 最大正向平均整流电流(Vdss)&#xff1a;60A 功率(Pd)&#x…

力扣--哈希表13.罗马数字转整数

首先我们可以知道&#xff0c;一个整数&#xff0c;最多由2个罗马数字组成。 思路分析 这个方法能够正确将罗马数字转换为阿拉伯数字的原因在于它遵循了罗马数字的规则&#xff0c;并且对这些规则进行了正确的编码和处理。 罗马数字规则 罗马数字由以下字符组成&#xff1a…

运维笔记.MySQL.基于mysqldump数据备份与恢复

运维专题 MySQL.基于mysqldump数据备份与恢复 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: [email protected]. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_2855…