C 标准库系列之locale.h
locale.h 区域设置相关,主要针对时间日期、货币格式、字符控制、数字格式等以满足某区域的设置需要。
locale设置类别主要包括以下几个宏定义的类别:
LC_ALL:设置所有的类别;
LC_COLLATE:设置控制整理顺序;
LC_CTYPE:设置字符分类;
LC_MONETARY:设置货币的格式;
LC_NUMERIC:设置数字格式,如小数点后位数;
LC_TIME:设置时间日期格式;
某些C标准库实现还提供了其他类型的设置类别扩展,如glibc实现约有12种类型;不过除以上类别外的其他类别在移植性方面可能会有影响。
其他的如:
LC_MESSAGES:信息提示、错误信息、状态信息、标题、标签、按钮和菜单等信息类别;
LC_PAPER:纸张尺寸大小类别;
LC_NAME:名称书写类别;
LC_ADDRESS:地址书写类别;
LC_TELEPHONE:电话号码类别;
LC_MEASUREMENT:度量测量方式类别;
LC_IDENTIFICATION:locale自身信息类别;
此外在设置类别是存在一定的优先级别,即一般满足LC_ALL > LC_* >LANG;也即是前者会覆盖后者的设置,各个类别会影响相应类别的相关函数行为,如mbstowcs、strftime等。
两个比较重要的函数,setlocale、localeconv分别为设置某类别的区域本地化信息并返回相应设置的地域化信息、获取当前设置的区域格式。
char *setlocale( int category, const char *locale ):category即为类别,locale为设置区域信息,如"CHS","C","",”US“,等;一般可根据需要设置区域信息,不过若需要
还原时一般针对某种类别或所有的设置使用“C”即可使用默认的C编译环境,“”则使用本地区域的环境。
struct lconv * localeconv(void):返回值为一个结构,各主要成员参数分别为:
decimal_point:小数点;
thousands_sep:千位数分隔符;
grouping:分组,如3时,则为1 000 000 000的格式分组;
int_curr_symbol:当前货币符号前置标识,如CNY,USD等;
currency_symbol:当前货币符号标识,如¥、$等;
mon_decimal_point:货币小数点;
mon_thousands_sep:货币千位数分隔符;
mon_grouping:货币分组;
positive_sign:正值符号标识;
negative_sign:负值符号标识;
int_frac_digits:国际货币小数数字;
frac_digits:货币小数数字;
p_cs_precedes、p_sep_by_space、n_cs_precedes、n_sep_by_space、p_sign_posn、n_sign_posn:则为0或者1的值,主要用以表明符号所处的位置。
glibc以及微软的lconv结构还有其他的成员参数,同样的这些成员也可能会有移植性问题;
除了以上两个函数外glibc还提供了newlocale、duplocale、freelocale、uselocale区域设置的接口函数;微软的也提供了_create_locale、_free_locale、_get_current_locale、
_configthreadlocale区域设置接口,所有的以上这些接口可能都会影响可移植性。
C 标准库系列之locale.h的更多相关文章
- C 标准库系列之errno.h
errno.h 提供了一个整数全局变量errno,当系统调用或者库函数的错误事件发生时可能会修改该值,指明错误的原因,该值可在任何需要的地方被修改:一般情况不为0的值表示出现了异常或者错误. errn ...
- C 标准库系列之assert.h
先简单介绍一下<assert.h>头文件,该头文件的目的便是提供一个宏assert的定义,即可以在程序必要的地方使用其进行断言处理:断言在程序中的作用是当在调试模式下时,若程序给出的前提条 ...
- C 标准库系列之limits.h
limits.h 类似于float.h,其定义了一些列类型的值的范围.限制值,也就是说该类型的值不可以大于该上界或者小于该类型值的下界: glibc中宏定义了一下的值: # define MB_LEN ...
- C 标准库系列之float.h
float.h 内部主要包含了一系列的浮点数宏.指明可移植程序必要的常量:浮点数格式一般为Spxbe;其中S表示+-:p表示底数.b表示基数如2.8.10.16等进制,e为指数标识E或e: 在一般情况 ...
- C 标准库系列之ctype.h
ctype.h 主要提供了一些函数用以测试字符或字符处理的功能函数:包括字符判断检测.字符转换: 目前ASCII字符可分为以下一些类型,如:大写.小写.字母.数字.十六进制.空白字符.可打印字符.控制 ...
- C 标准库系列之概述
基本上很多编程语言都会提供针对语言本身的一系列的标准库或者包,当然C语言同样也有提供标准库,C语言的标准库是一系列的头文件的集合:如assert.h.ctype.h.errno.h.float.h.l ...
- 《C标准库》——之<ctype.h>
在没读<ctype.h>的源码之前,我一直以为我们平时用的isalnum.isdigit.isalpha等这些函数,是靠判断写出来的. 比如: int isdigit(int c){ re ...
- 《C标准库》——之<stddef.h>
<stddef.h>,顾名思义,就是标准定义.C语言里这个标准库里定义了一些类型,和宏定义. <stddef.h>的内容: 类型: ptrdiff_t : 是两个指针相减的结果 ...
- 《C标准库》—之<assert.h>实现
首先,贴出标准库中<assert.h>的实现源码: #undef assert #ifdef NDEBUG #define assert(test)((void)0) #else void ...
随机推荐
- centos6.5 更新yum源
在使用centos过程中,自带的yum源包,不能满足的情况下,这个时候就可以考虑升级yum源了.国内用的比较多的是163镜像地址为http://mirrors.163.com/.help/centos ...
- JestClient
JestService.java [html] view plain copy 在CODE上查看代码片派生到我的代码片 public class JestService { /** * 获取JestC ...
- Node.js之路【第三篇】NodeJS异步实现
NodeJS异步实现 Node.js异步编程的直接体现就是回调,它依托于回调来实现,但不能说使用了回调他就是异步了 回调函数在完成任务后就会被调用,Node使用了大量的回调函数,Node所有的API都 ...
- MySQL练习-employees数据库(二)
department 部门表 dept_emp 部门员工任职期表(按部门&时期) dept_manager 部门经理任职期表(按时期) employees 员工详情表 salaries 员工薪 ...
- icomoon图标的使用
这里的图标可以自己定义 网址:https://icomoon.io/app/#/select/ 定义完后,自己下载下来 引用: <link href="css/style.css ...
- 【Android】Android如何一进入一个activity就弹出输入法键盘
在AndroidManife.xml中的Activity配置中加入 android:windowSoftInputMode="stateVisible|adjustResize"
- Yii2 assets注册的css样式文件没有加载
准备引入layui.css文件的,在LayuiAssets类中已经配置了资源属性 <?php namespace frontend\assets; use yii\web\AssetBundle ...
- ubuntu专用
独立显卡处理驱动处理问题: http://blog.csdn.net/liufunan/article/details/52090382 git的教程: http://www.bootcss.com/ ...
- mysql使用load导入csv文件所遇到的问题及解决方法
使用navicat的客户端插入csv的数据文件,有一种非常简单的方式,即使用导入向导,直接根据数据匹配即可. 使用load的方式. 由于本项目中插入数据表量大而且格式统一,故首先使用创建字段creat ...
- 码途有道----基于系统观的核心能力构建-by-韩宏老师
原文链接:http://blog.sina.com.cn/s/blog_7d5a09f90102v341.html 有感于同学们在大学中如何学习计算机技术有些感概,将我书(老码识途)中的序言整理了一下 ...