c++11 标准模板(STL)本地化库 - 平面类别(std::numpunct_byname) 表示系统提供的具名本地环境的 std::numpunct
本地化库
本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C++ 标准库的其他组件的行为。
平面类别
表示系统提供的具名本地环境的 std::numpunct
std::numpunct_byname
| template< class CharT > |
std::numpunct_byname 是 std::numpunct 平面,它封装在其构造时指定的 locale 的数值标点偏好。
标准库提供二个特化
| 定义于头文件 | |
| std::numpunct_byname<char> | 窄字符 I/O 的本地环境限定 std::numpunct 平面 |
| std::numpunct_byname<wchar_t> | 宽字符 I/O 的本地环境限定 std::numpunct 平面 |
成员类型
| 成员类型 | 定义 |
char_type | CharT |
string_type | std::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: |
销毁平面。
继承自 std::numpunct
成员类型
| 成员类型 | 定义 |
char_type | charT |
string_type | std::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_truename 或 do_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
相关文章:
c++11 标准模板(STL)本地化库 - 平面类别(std::numpunct_byname) 表示系统提供的具名本地环境的 std::numpunct
本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 表示系统提供的具名本地环境的 std::numpunct std::numpunct_byn…...
XILINX FPGA DDR 学习笔记(一)
DDR 内存的本质是数据的存储器,首先回到数据的存储上,数据在最底层的表现是地址。为了给每个数据进行存放并且在需要的时候读取这个数据,需要对数据在哪这个抽象的概念进行表述,我们科技树发展过程中把数据在哪用地址表示。一个数…...
vue源码2
vue之mustache库的机理其实是将模板字符串转化为tokens 然后再将 tokens 转化为 dom字符串,如下图 对于一般的将模板字符串转化为dom字符串,这样不能实现复杂的功能 let data {name:小王,age:18 } let templateStr <h1>我叫{{name}},我今年{{ag…...
Android四大组件 Broadcast广播机制
一 概述 广播 (Broadcast) 机制用于进程或线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者 BroadcastReceiver 是 Android 四大组件之一。BroadcastReceiver 分为两类: 静态广播接收者:通过 AndroidManifest.xm…...
redisson 使用fastJson2序列化
前因:一个项目:有人用redisTemplete存数据(使用了fastjson2),使用redisson取的时候就会报错。要让redisTemplete与redisson序列化一致 一、自定义序列化器 import com.alibaba.fastjson2.JSON; import com.alibaba.fa…...
Python数据分析常用函数
Python基础 数字处理函数 Python提供了用于数字处理的内置函数和内置模块(math),使用内置模块,需要先导入 import math。 内置函数math模块abs(-5)返回绝对值math.ceil(2.3)返回不小于x的最小整数divmod(9,4)返回商和余数math.floor(2.3)返回不大于x的…...
C++ 数据结构算法 学习笔记(32) -五大排序算法
C 数据结构算法 学习笔记(32) -五大排序算法 选择算法 如下若有多个女生的身高需要做排序: 常规思维: 第一步先找出所有候选美女中身高最高的,与最后一个数交换 第二步再找出除最后一位美女外其它美女中的最高者,与倒数第二个美女交换位置 再找出除最…...
从入门到精通:详解Linux进程管理
前言 在这篇文章中,我将带领大家深入学习和理解Linux系统中的进程管理。无论你是初学者还是有一定经验的开发者,相信这篇文章都会对你有所帮助。我们将详细讲解冯诺依曼体系结构、操作系统概念、进程管理、进程调度、进程状态、环境变量、内存管理以及其…...
【Linux】如何在 Linux 系统中使用 envsubst 来处理 Nginx 配置模板
一、创建 nginx.template 模板文件 vim nginx.template复制下面文件内容 server { listen ${BY_PORT}; server_name ${BY_HOST}; location /sys/ { proxy_pass http://${BY_GRAFANA_HOST}:${BY_GRAFANA_PORT}/; } # 其他配置... }这个模板中包含了几个环境变量&#…...
【LeetCode】438.找到字符串中所有字母异位词
找到字符串中所有字母异位词 题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 示…...
力扣96. 不同的二叉搜索树
Problem: 96. 不同的二叉搜索树 文章目录 题目描述思路复杂度Code 题目描述 思路 一个数字做根节点的话可能的结果为:其左边数字做子树的组合数字乘以其右边数字做子树的个数之积 1.创建备忘录memo; 2.递归分别求取当前数字左边和右边数字做子树的数量&…...
哈希表的用途
...
k8s笔记 | 高度调度
CronJob计划任务 简介:在k8s中周期性运行计划任务,与linux中的crontab相同;注意点 CornJob执行的时间是controller-manager的时间,所以一定要确保controller-manager的时间是准确的,另外cornjob cron表达式 文章参…...
Rom应用开发遇到得一些小bug
记录一些细碎得bug ROM时间类问题 问题描述: 设备拔电重启,ROM时间为默认时间如1970年1月1日,与某些业务场景互斥 问题原因: 后台接口校验https证书校验失败,要求是2年内得请求头校验了时间戳,时间戳过期…...
Python简介
Python简介 1. Python定义 Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构,它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。 Python 是解释型语言: 开发过程中没有了编译这个环…...
C++完成特色旅游管理信息系统
背景: 继C完成淄博烧烤节管理系统后,我们来到了特色旅游管理信息系统的代码编写,历史链接点下方。 C完成淄博烧烤节管理系统_淄博烧烤总账管理系统的-CSDN博客 问题描述: 为了更好的管理各个服务小组,开发相应的管…...
贵州大学24计算机考研数据速览,国家重点实验室22408复试线285分!贵州大学计算机考研考情分析!
贵州大学计算机科学与技术学院坐落在贵州大学北校区(贵阳花溪)。 学院现有教职工139人,其中专职教师126人,教授17人,副教授37人,讲师46人,高级实验师4人,实验师17人。具有博士学位的…...
分区4K对齐那些事,你想知道的都在这里
在对磁盘进行分区时,有一个很重要的注意事项,就是要将分区对齐,不对齐可能会造成磁盘性能的下降。尤其是固态硬盘SSD,基本上都要求4K对齐。磁盘读写速度慢还找不到原因?可能就是4K对齐的锅。那么分区对齐究竟是怎么回事?为什么要对齐?如何才能对齐?如何检测是否对齐呢?…...
达梦数据库学习笔记
架构、特点和基本概念 达梦数据库(DM Database)是中国达梦数据库有限公司自主研发的关系型数据库管理系统。它广泛应用于政府、金融、电信、能源等行业,具备高性能、高可靠性和高安全性的特点。 架构 达梦数据库的架构设计注重高性能和高可…...
安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)
大家都知道,安卓每次更新都会给权限划分的更细、收的更紧。 早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录,没有之前安卓11授权的图了,反正都长一个样,就直接贴新图了。 后面到了安卓12~13的…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
