c++11 标准模板(STL)本地化库 - std::tolower(std::locale) 用本地环境的 ctype 刻面将字符转换为小写

本文主要是介绍c++11 标准模板(STL)本地化库 - std::tolower(std::locale) 用本地环境的 ctype 刻面将字符转换为小写,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本地化库

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

用本地环境的 ctype 刻面将字符转换为小写

std::tolower(std::locale)

template< class charT >
charT tolower( charT ch, const locale& loc );

用给定 loacale 的 std::ctype 平面所指定的转换规则,若可能则转换字符 ch 为小写。

参数

ch-字符
loc-本地环境

返回值

ch 的小写形式列于 locale 则返回它,否则返回不更改的 ch

注意

此函数只能进行 1:1 字符映射,例如希腊文大写字母 'Σ' 拥有二个小写形式,取决于在词中的位置: 'σ' 与 'ς' 。此情况下对 do_tolower 的调用不能获得正确的小写形式。

可能的实现

template< class charT >
charT tolower( charT ch, const std::locale& loc ) {return std::use_facet<std::ctype<charT>>(loc).tolower(ch);
}

调用示例

#include <iostream>
#include <locale>void try_with(wchar_t c, const char* locale)
{//用给定 loacale 的 std::ctype 平面所指定的转换规则,若可能则转换字符 ch 为小写。std::cout << "tolower('"<< c<< "', locale(\""<< locale<< "\")) returned "<< std::boolalpha<< std::tolower(c, std::locale(locale))<< std::endl;
}int main()
{//空格 (0x20, ' ')//换页(0x0c, '\f')//换行(0x0a, '\n')//回车(0x0d, '\r')//水平制表符(0x09, '\t')//垂直制表符(0x0b, '\v')std::cout << std::boolalpha;std::locale locale1;  // locale1 是经典 "C" 本地环境的副本std::cout << "locale1.name():   " << locale1.name() << std::endl;std::locale locale2("Chinese (Simplified)_China.936"); // locale2 为本地环境std::cout << "locale2.name():   " << locale2.name() << std::endl;const wchar_t tolowerC = L'\u042f'; // 西里尔大写字母 yatry_with(tolowerC, locale1.name().c_str());try_with(tolowerC, locale2.name().c_str());std::cout << std::endl;const wchar_t tolowerC2 = '1'; // ASCII '1'try_with(tolowerC2, locale1.name().c_str());try_with(tolowerC2, locale2.name().c_str());std::cout << std::endl;const wchar_t tolowerC3 = 1; // ASCII 1try_with(tolowerC3, locale1.name().c_str());try_with(tolowerC3, locale2.name().c_str());std::cout << std::endl;const wchar_t tolowerC4 = 'a'; // ASCII atry_with(tolowerC4, locale1.name().c_str());try_with(tolowerC4, locale2.name().c_str());std::cout << std::endl;const wchar_t tolowerC5 = ','; // ASCII ','try_with(tolowerC5, locale1.name().c_str());try_with(tolowerC5, locale2.name().c_str());std::cout << std::endl;const wchar_t tolowerC6 = ' '; // ASCII ' 'try_with(tolowerC6, locale1.name().c_str());try_with(tolowerC6, locale2.name().c_str());std::cout << std::endl;const wchar_t tolowerC7 = 'A'; //Atry_with(tolowerC7, locale1.name().c_str());try_with(tolowerC7, locale2.name().c_str());std::cout << std::endl;return 0;
}

输出

locale1.name():   C
locale2.name():   Chinese (Simplified)_China.936
tolower('1071', locale("C")) returned 1103
tolower('1071', locale("Chinese (Simplified)_China.936")) returned 1103tolower('49', locale("C")) returned 49
tolower('49', locale("Chinese (Simplified)_China.936")) returned 49tolower('1', locale("C")) returned 1
tolower('1', locale("Chinese (Simplified)_China.936")) returned 1tolower('97', locale("C")) returned 97
tolower('97', locale("Chinese (Simplified)_China.936")) returned 97tolower('44', locale("C")) returned 44
tolower('44', locale("Chinese (Simplified)_China.936")) returned 44tolower('32', locale("C")) returned 32
tolower('32', locale("Chinese (Simplified)_China.936")) returned 32tolower('65', locale("C")) returned 97
tolower('65', locale("Chinese (Simplified)_China.936")) returned 97

这篇关于c++11 标准模板(STL)本地化库 - std::tolower(std::locale) 用本地环境的 ctype 刻面将字符转换为小写的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

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

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

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象