【C标准库】通过locale.h设置美元的格式
本文已整合到C语言标准库深度解读
locale.h
主要对时间和货币的书写格式进行了封装,从而符合不同地区的使用习惯。故而locale.h
中设计了两个用于本地化的函数
char *setlocale(int category, const char *locale)
struct lconv *localeconv(void)
前者用于设置或读取本地化信息,locale
即代表某个区域的字符串,category
代表将要设置的函数类别,其输入参数包括
值 | 宏 | 说明 | 影响的函数 |
---|---|---|---|
0 | LC_ALL | 下面的所有选项 | |
1 | LC_COLLATE | 字符串比较 | strcoll 和 strxfrm |
2 | LC_CTYPE | 字符分类和转换 | 所有字符函数 |
3 | LC_MONETARY | 货币格式 |
localeconv()
|
4 | LC_NUMERIC | 小数点分隔符 |
localeconv()
|
5 | LC_TIME | 日期和时间格式 |
strftime()
|
6 | LC_MESSAGES | 系统响应 |
其中,localeconv()
函数被封装在locale.h
中,其返回值是一个lconv
结构,主要用于描述货币的表示方法,每个字段的含义在下面的注释中说明。在注释中,cs
表示当前区域的货币符号。
typedef struct {char *decimal_point; //常规数值的小数点字符char *thousands_sep; //常规数值的千位分隔符char *grouping; //常规数值中每组数字大小的字符串char *int_curr_symbol; //国际货币符号使用的字符串。前三个字符由 ISO 4217:1987 指定,第四个字符用于分隔货币符号和货币量。char *currency_symbol; //当前区域的货币符号,后文用cs表示char *mon_decimal_point; //货币的小数点字符char *mon_thousands_sep; //货币的千位分隔符char *mon_grouping; //货币数值中每组数字大小的字符串char *positive_sign; //货币的正号char *negative_sign; //货币的负号char int_frac_digits; //国际货币值中小数点后要显示的位数char frac_digits; //货币值中小数点后要显示的位数。char p_cs_precedes; //cs在正货币值中的位置char p_sep_by_space; //cs与正货币值之间是否使用空格char n_cs_precedes; //cs在负货币值中的位置char n_sep_by_space; //cs与负货币值之间是否使用空格char p_sign_posn; //表示正货币值中正号的位置char n_sign_posn; //表示负货币值中负号的位置
} lconv
其中,grouping
和mon_grouping
均为字符串,分别表示在常规数值和货币中每组数字大小。字符串中每个字符都代表一个整数,用以指定当前组的位数。
当前区域的货币符号cs
与货币值之间的排版方式为
值为1 | 值为0 | |
---|---|---|
p_cs_precedes | cs在正货币值之前 | cs在正货币值之后 |
p_sep_by_space | cs和正货币值之间用空格 | cs和正货币值之间不使用空格 |
n_cs_precedes | cs在负货币值之前 | cs在负货币值之后。 |
n_sep_by_space | cs和负货币值之间使用空格 | cs和负货币值之间不使用空格 |
货币中正负号的位置通过p_sign_posn
和n_sign_posn
来调节,二者均有5个取值。
对于-1美元,其cs
的符号设为$,当其n_sign_posn
取值从0-5,n_cs_precedes
分别为0,1
时,表示方法分别如下
0 | 1 | 2 | 3 | 4 | |
---|---|---|---|---|---|
0 |
(1.00 $)
|
-1.00 $
|
1.00 $-
|
1.00 -$
|
1.00 $-
|
1 |
($1.00 )
|
-$1.00
|
$1.00 -
|
-$1.00
|
$-1.00
|
说明 | 括号 | 数值和cs之前 | 数值和cs之后 | cs之前 | cs之后 |
【C标准库】通过locale.h设置美元的格式相关推荐
- 2020-11-02C 标准库 - <ctype.h>
C 标准库 - <ctype.h> 简介 C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符. 这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符 ...
- C 标准库——cmath/math.h
C 标准库-- string.h C 标准库 -- time.h C 标准库 -- limits.h C 标准库 -- stdio.h C 标准库-- stdlib.h(包括 rand srand 的 ...
- C语言 : 标准库 - <ctype.h>
简介 C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符. 这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符号字符. 如果参数 c 满足描述的条件,则这些函 ...
- C 非标准库(conio.h)
所谓的 C 标准库(C standard library),是指在 ISO C 或者 POSIX 标准中定义的: POSIX is a superset(超集) of the standard C l ...
- 解决ubuntu下c++标准库缺少conio.h
该头文件是用于检测键盘输入的,在windows下,c++标准库是自带的,但是在Linux下没有该头文件,可以通过手动的方式进行添加.步骤如下: 1.打开终端, sudo gedit 2.在弹出的文件里 ...
- c语言标准库 菜鸟教程,C 标准库 – locale.h | 菜鸟教程
C 标准库 - 简介 locale.h 头文件定义了特定地域的设置,比如日期格式和货币符号.接下来我们将介绍一些宏,以及一个重要的结构 struct lconv 和两个重要的函数. 库宏 下面列出了头 ...
- C 标准库 - ctype.h
C 标准库 - <ctype.h> 简介 C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符. 这些函数接受 int 作为参数,它的值必须是 EOF 或表示为一个无符 ...
- C 标准库 - assert.h
C 标准库 - <assert.h> 简介 C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息. 已定义的宏 a ...
- C 标准库 —— limits.h
C 标准库-- string.h C 标准库 -- time.h C 标准库 -- limits.h C 标准库 -- stdio.h C 标准库-- stdlib.h(包括 rand srand 的 ...
最新文章
- Science Bulletin:绝对丰度的植物根际微生物群落“扩增-选择”模型
- linux安装jdk8_Skywalking系列博客1-安装单机版 Skywalking
- Find a way
- Kotlin实战指南七:单例模式
- 有限状态机与应用一例
- Codeforces 319C DP 斜率优化
- 高通芯片(Android)恢复\编辑\备份 imei(nv信息)工具及步骤
- keepalived配置文件相关简单解释
- 目标检测tricks(基于detectron2)
- NPDP知识推送-第六章市场研究(4)
- 从Bugreport 解读 Android电量统计原理
- linux shell awk 语法
- 雨松MOMO 之 开始学习搭建界面自适应屏幕(一)
- python中的copy.deepcopy()
- vr数字景区应运而生,vr云游带商家线上转型
- vc++按钮应用大全
- 怎么搭建一个C语言的开发环境?
- 中文乱码解决及中文编码成UTF8
- 淘宝/天猫优惠券查询 API 返回值说明
- Android Studio 教程:入门开发第一个程序
热门文章
- 编码:隐藏在计算机软硬件背后的语言(一)编码
- 互联网晚报 | 11月3日 星期三 | 头条西瓜等业务并入抖音;菜鸟联合天猫上亿元补贴快递员;雅虎宣布正式退出中国市场...
- 微信小程序存在的风险_警惕,你的微信小程序可能面临着风险!
- laravel使用scout和elasticsearch中文分词ik
- iPhone2018年最全iPhone尺寸
- 【信息汇总】浙江大学计算机考研
- 最新常用数据库排名及分类介绍
- 联想电脑虚拟化开启方法
- 动态规划 最长公共子序列 过程图解
- wifidog+authpuppy认证流程详解