c++11 标准模板(STL)本地化库 - 平面类别(std::messages) - 实现从消息目录获取字符串(二)

本地化库

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

平面类别

实现从消息目录获取字符串

std::messages

template< class CharT >
class messages;

类模板 std::messages 是标准 locale 平面,它封装从消息目录取得字符串,例如 GNU gettext 或 POSIX catgets 所提供者。

消息源是实现定义的。

继承图

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

定义于头文件 <locale>

std::messages<char>访问窄字符串消息目录
std::messages<wchar_t>访问宽字符串消息目录

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

调用 do_open & 打开具名消息目录

std::messages<CharT>::open, 
std::messages<CharT>::do_open

public:
catalog open( const std::basic_string<char>& name, const std::locale& loc ) const;

(1)

protected:
virtual catalog do_open( const std::basic_string<char>& name, const std::locale& loc ) const;

(2)

1) 公开成员函数,调用最终导出类的受保护虚成员函数 do_open

2) 获得 catalog 类型(继承自 std::messages_base )值,能将它传递给 get() 以从 name 所指名的消息目录取得消息。此值可使用直至传递给 close() 为止。

参数

name-要打开的消息目录名称
loc-提供可能为从目录读取消息所要求的额外平面,例如用以进行宽/多字节转换的 std::codecvt 的 locale 对象

返回值

能传递给 get() 和 close() 的非负 catalog 类型值。若无法打开目录则返回负值。

注意

POSIX 系统上,此函数调用通常翻译为调用 catopen() 。 GNU libstdc++ 中,它调用 textdomain

实际目录位置是实现定义的:例如对于德文本地环境中的目录 "sed" (以 Unix 工具 'sed' 安装的消息目录),此函数调用所打开的文件可能为 /usr/lib/nls/msg/de_DE/sed.cat, /usr/lib/locale/de_DE/LC_MESSAGES/sed.cat/usr/share/locale/de/LC_MESSAGES/sed.mo

调用示例 linux

#include <iostream>
#include <locale>int main()
{std::locale loc("de_DE.utf8");std::cout.imbue(loc);auto& facet = std::use_facet<std::messages<char>>(loc);auto cat = facet.open("sed", loc);if (cat < 0){std::cout << "Could not open german \"sed\" message catalog" << std::endl;}else{std::cout << "\"No match\" in German: "<< facet.get(cat, 0, 0, "No match") << std::endl<< "\"Memory exhausted\" in German: "<< facet.get(cat, 0, 0, "Memory exhausted") << std::endl;}facet.close(cat);return 0;
}

输出

"No match" in German: Keine Übereinstimmung
"Memory exhausted" in German: Speicher erschöpft
Press <RETURN> to close this window...

调用示例 windows

#include <iostream>
#include <locale>int main()
{std::locale loc("Chinese (Simplified)_China.936");std::cout.imbue(loc);auto& facet = std::use_facet<std::messages<char>>(loc);auto cat = facet.open("sed", loc);if (cat < 0){std::cout << "Could not open german \"sed\" message catalog" << std::endl;}else{std::cout << "\"No match\" in German: "<< facet.get(cat, 0, 0, "No match") << std::endl<< "\"Memory exhausted\" in German: "<< facet.get(cat, 0, 0, "Memory exhausted") << std::endl;}facet.close(cat);return 0;
}

输出

Could not open german "sed" message catalog

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

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

相关文章

智慧文旅:引领旅游产业智慧升级的创新模式

一、智慧文旅是什么&#xff1f; 智慧文旅是指以当地特色文化为核心&#xff0c;借助现代科技手段&#xff0c;实现旅游景区全面智慧升级的旅游模式。在智慧文旅中&#xff0c;新一代信息网络技术和装备得到充分运用&#xff0c;文化旅游基础设施得到新建和改善&#xff0c;特…

自动批量将阿里云盘文件发布成WordPress文章脚本源码(以RiPro主题为例含付费信息下载地址SEO等自动设置)源码

背景 很多资源下载站&#xff0c;付费资源下载站&#xff0c;付费内容查看等都可以用WordPress站点发布内容&#xff0c;这些站点一般会基于一个主题&#xff0c;付费信息作为文章附属的信息发布&#xff0c;底层存储在WP表里&#xff0c;比如日主题&#xff0c;子比主题等。 …

猫咪也能吃大餐!福派斯无麸质牛肉猫粮,让爱宠更健康

作为猫奴的你们&#xff0c;总是希望给自家的小猫咪提供最好的营养。那么&#xff0c;今天我就来给大家推荐一款我个人非常喜欢的营养猫粮——福派斯无麸质牛肉高脂猫粮。 首先&#xff0c;让我们聊聊为什么选择无麸质猫粮。有些猫咪对麸质成分敏感&#xff0c;吃了含有麸质的猫…

上海亚商投顾:沪指缩量调整 有色、煤炭等周期股集体大跌

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日缩量调整&#xff0c;午后一度跌近1%&#xff0c;黄白二线走势分化&#xff0c;微盘股指数涨超3%。军…

【C++】优先队列

优先队结构的不同物理结构与常用操作算法 优先队列是一种特殊的队列,队列中的元素具有优先级,每次弹出操作会弹出优先级最高的元素。 优先队列常用的物理结构有: 1. 数组:简单但不高效,插入和删除操作需要移动大量元素,时间复杂度高。 2. 二叉堆:是一种完全二叉树,通常用数…

Checkpoint机制和生产配置

1.前提 在将Checkpoint之前&#xff0c;先回顾一下flink处理数据的流程&#xff1a; 2. 概述 Checkpoint机制&#xff0c;又叫容错机制&#xff0c;可以保证流式任务中&#xff0c;不会因为异常时等原因&#xff0c;造成任务异常退出。可以保证任务正常运行。 &#xff08;1&…

MySQL库表占用空间排序

在进行数据库备份恢复时&#xff0c;经常会碰到耗时很长的问题。大概率是因为某些库表的占用空间太大。 以下语句按照库表占用空间大小&#xff0c;进行降序排序&#xff1a; SELECT table_schema AS Database,table_name AS Table,ROUND((data_length index_length) / 1024…

腾讯文档中目录的生成及级别设置

腾讯文档是一款可多人同时编辑的在线文档。腾讯文档支持在线Word、Excel、PPT、PDF、收集表、思维导图、流程图多种类型。 今天介绍在线Word的目录生成及级别设置。 文章目录 一、腾讯文档生成目录二、目录的级别设置 一、腾讯文档生成目录 首先需要设置好文章的标题级别 在…

日志分析简单总结

1、分析日志的目的 误报&#xff1a;不是攻击而上报成攻击 漏报&#xff1a;是攻击而没有防御的情况 日志分析可以判断是否误判或者漏判&#xff0c;可以溯源攻击行为 在护网作为防守方必备的技能&#xff08;分析NGAF和态势感知&#xff0c;发现异常&#xff09; 2、攻击出现…

计算机网络物理层思维导图+大纲笔记

大纲笔记&#xff1a; 物理层的基本概念 解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是具体的传输媒体 主要任务 确定与传输媒体接口有关的一些特性 机械特性 电气特性 功能特性 规程特性信道上传送的信号 基带信号 来自信源的信号&#xff0c;直接表…

C#基础|属性Property之读写特性和经典总结

哈喽&#xff0c;你好&#xff0c;我是雷工。 本节学习属性特性——控制读写操作&#xff0c;以下为学习笔记。 01 只读属性 写法1&#xff1a;直接去掉set方法&#xff0c;可以在定义的时候初始化。 示例&#xff1a; public string CourseName{get&#xff1b;}“雷工笔记…

新版ONENET(2024/4/24)通过view3.0可视化保姆级教程(一学就会)附效果图

⏩ 大家好哇&#xff01;我是小光&#xff0c;想要成为系统架构师的嵌入式爱好者。 ⏩上一篇是STM32通过ESP8266连接最新版的ONENET&#xff0c;成功将数据上传之后&#xff0c;本篇文章使用ONENET的view3.0可视化对数据进行可视化做一个详细教程。 ⏩感谢你的阅读&#xff0c;…