当前位置: 首页 > news >正文

c++11 标准模板(STL)本地化库 - std::islower(std::locale) 检查字符是否被本地环境分类为小写

本地化库

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

检查字符是否被本地环境分类为小写

std::islower(std::locale) 

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

检查给定字符是否为给定 locale 的 std::ctype 平面分类为小写字母字符。

参数

ch-字符
loc-本地环境

返回值

若给定字符被分类为小写则返回 true ,否则返回 false 。

可能的实现

template< class charT >
bool islower( charT ch, const std::locale& loc ) {return std::use_facet<std::ctype<charT>>(loc).is(std::ctype_base::lower, ch);
}

调用示例

#include <iostream>
#include <locale>void try_with(wchar_t c, const char* locale)
{//检查给定字符是否为给定 locale 的 std::ctype 平面分类为大写字母字符。std::cout << "islower('"<< c<< "', locale(\""<< locale<< "\")) returned "<< std::boolalpha<< std::islower(c, std::locale(locale))<< std::endl;
}int main()
{//检查给定的字符在当前的 C 本地环境中是否是空白字符。//空格 (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 islowerC = L'\u03c0'; // 希腊文小写字母 pitry_with(islowerC, locale1.name().c_str());try_with(islowerC, locale2.name().c_str());std::cout << std::endl;const wchar_t islowerC2 = 'A'; // ASCII Atry_with(islowerC2, locale1.name().c_str());try_with(islowerC2, locale2.name().c_str());std::cout << std::endl;const wchar_t islowerC3 = 'a'; // ASCII Atry_with(islowerC3, locale1.name().c_str());try_with(islowerC3, locale2.name().c_str());return 0;
}

输出

locale1.name():   C
locale2.name():   Chinese (Simplified)_China.936
islower('960', locale("C")) returned true
islower('960', locale("Chinese (Simplified)_China.936")) returned trueislower('65', locale("C")) returned false
islower('65', locale("Chinese (Simplified)_China.936")) returned falseislower('97', locale("C")) returned true
islower('97', locale("Chinese (Simplified)_China.936")) returned true

http://www.lryc.cn/news/322991.html

相关文章:

  • 粘度指数改进剂市场需求增长 为润滑油添加剂细分产品
  • LabVIEW柴油机安保监控系统
  • 实测国内AI大模型问答效果
  • 不得不等待的无奈 -《葡萄成熟时》
  • 【Python】Python中装饰器和魔法方法的区别
  • 【React】创建你的第一个React组件
  • 五分钟搞懂MySQL索引下推
  • 【数据库】SQL如何添加数据
  • ClickHouse01-什么是ClickHouse
  • 使用Docker搭建Nascab
  • Elasticsearch8.x版本Java客户端Elasticsearch Java API 如何并发修改
  • Docker 安装 Skywalking以及UI界面
  • mysql 空间查询 多边形内的点
  • 实际开发中,git版本切换操作
  • 线程池实现“线程复用”的原理
  • [Linux开发工具]——make/Makefile的使用
  • C++中的动态数组vector的基本操作
  • vsc ctrl+. 无效的问题
  • 科大讯飞开放平台-python语音转文字教程
  • 【LeetCode: 433. 最小基因变化 + BFS】
  • Python 安装目录及虚拟环境详解
  • linux sh脚本编写
  • 代码随想录笔记|C++数据结构与算法学习笔记-字符串(二)|28. 实现 strStr()、459.重复的子字符串、KMP算法
  • 【复杂网络建模】——建模工具Matlab入门
  • JVM面试篇
  • openEuler 22.03(华为欧拉)一键安装 Oracle 19C RAC(19.22) 数据库
  • 蓝桥杯刷题记录之数字王国之军训排队
  • Go语言学习Day1:什么是Go?
  • C语言内存函数之 memcmp函数
  • 3. C++ 常见的段错误及对策