c语言setlocale函数,setlocale函数
#include
char*setlocale(intcategory,constchar* locale);
说明:
category:为locale分类,表达一种locale的领域方面,通常有下面这些预定义常量:LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_MONETARY、LC_NUMERIC、LC_TIME,其中 LC_ALL 表示所有其它locale分类的并集。
locale:为期望设定的locale名称字符串,在Linux/Unix环境下,通常以下面格式表示locale名称:language[_territory][.codeset][@modifier],language 为 ISO 639 中规定的语言代码,territory 为 ISO 3166 中规定的国家/地区代码,codeset 为字符集名称。
当 locale 为 NULL 时,函数只做取回当前 locale 操作,通过返回值传出,并不改变当前 locale。
当 locale 为 "" 时,根据环境的设置来设定 locale,检测顺序是:环境变量 LC_ALL,每个单独的locale分类LC_*,最后是 LANG 变量。为了使程序可以根据环境来改变活动 locale,一般都在程序的初始化阶段加入下面代码:setlocale(LC_ALL, "")。
当C语言程序初始化时(刚进入到 main() 时),locale 被初始化为默认的 C locale,其采用的字符编码是所有本地 ANSI 字符集编码的公共部分,是用来书写C语言源程序的最小字符集(所以才起locale名叫:C)。
当用 setlocale() 设置活动 locale 时,如果成功,会返回当前活动 locale 的全名称;如果失败,会返回 NULL。
setlocale()的作用和使用例子
当向终端、控制台输出 wchar_t 类型的字符时,需要设置 setlocale(),因为通常终端、控制台环境自身是不支持 UCS 系列的字符集编码的,使用流操作函数时(如:printf()),在标准/RT库实现的内部会将 UCS 字符转换成合适的本地 ANSI 编码字符,转换的依据就是 setlocale() 设定的活动 locale,最后将结果字符序列传递给终端,对于来自终端的输入流这个过程刚好相反。
可以用重定向输出流到文件的方法验证上面的机制:无论是 Windows CRT、Linux glibc、Cygwin glibc,使用 wprintf() 打印 wchar_t 字符文本时,重定向到文件的内容总是 GBK、UTF-8 等本地 ANSI 编码,而不会是 UCS 编码。
提示:UCS实际实现是utf-8,utf-16,utf-32
转自:https://blog.csdn.net/chenjiayi_yun/article/details/10091563
调用setlocale原因:
在C/C++语言标准中定义了其运行时的字符集环境为"C",是ASCII字符集的一个子集,mbstowcs在工作时会将cstr中所包含的字符串看作是ASCII编码的字符,而不认为是一个包含有chs编码的字符串,所以会将每一个中文拆成2个ASCII编码进行转换,结果是会形成4个wchar_t的字符组成的串。
通过调用setlocale( LC_ALL, "chs" )函数,告诉mbstowcs目前cstr串中包含的是chs编码的字符串.
这个函数会改变整个应用程序的字符集编码方式,需要调用setlocale( LC_ALL, "C" )函数来还原。
c语言setlocale函数,setlocale函数相关推荐
- c语言中常用函数头文件,c语言中常用的函数和头文件
头文件ctype.h 函数列表 函数类别函数目的详细说明 字符测试为字符和数字的isalnum 是否为isalpha字符 是否控制字符iscntrl 是否为数字isdigit 是否能够显示文字(空格除 ...
- c语言计算字符串的函数是什么,字符函数
字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...
- R语言使用download.file函数下载网络文件到本地(Download File from the Internet)
R语言使用download.file函数下载网络文件到本地(Download File from the Internet) 目录 R语言使用download.file函数下载网络文件到本地(Down ...
- R语言使用trimws函数:trimws函数去除(删除、remove)字符串头尾的空格
R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格 目录 R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格
- R语言stringr包str_dup函数字符串多次复制实战
R语言stringr包str_dup函数字符串多次复制实战 目录 R语言stringr包str_dup函数字符串多次复制实战 #导入stringr包 #仿真数据
- R语言使用integrate函数进行函数积分计算实战
R语言使用integrate函数进行函数积分计算实战 目录 R语言使用integrate函数进行函数积分计算实战 #自定义函数 #积分操作
- R语言stringr包str_count函数计算字符串匹配个数实战
R语言stringr包str_count函数计算字符串匹配个数实战 目录 R语言stringr包str_count函数计算字符串匹配个数实战 #导入stringr包 #仿真数据
- R语言使用R原生函数plot和lines可视化线图、并使用lty参数自定义线条类型、lwd自定义设置线条的粗细、col参数自定义线条颜色(Change R base plot line types)
R语言使用R原生函数plot和lines可视化线图.并使用lty参数自定义线条类型.lwd自定义设置线条的粗细.col参数自定义线条颜色(Change R base plot line types) ...
- R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)
R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...
- R语言使用t.test函数计算两组独立数据的t检验(Independent t-test)
R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) 目录 R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) #仿真数据
最新文章
- KVell 单机k/v引擎:用最少的CPU 来调度Nvme的极致性能
- JAVA单线程以及java多线程的实现方式
- maven创建多模块项目
- Python实现跨文件全局变量的方法
- 梦世界服务器修改指令,我的世界梦世界有哪些指令必须知道 梦世界所有必须知道指令汇总...
- 《C#高级编程》笔记系列第三弹
- 02函数-03-闭包
- JavaScript计时器函数用法
- 5、UmbracoNewsSite:添加css和js文件
- C# 禁止控件重绘(绘制)
- 聊聊Eureka Server的REST API
- [转载]C# Socket编程 同步以及异步通信
- 无线安全之破解WPA/WPA2 加密WiFi
- FFT算法的C语言实现
- 关于小米路由器设置无线中继失败的问题
- 我从实习到现在的经历,幸运女神总会来到!
- 求星期算法c语言程序,C语言根据指定日期计算是星期几
- Python实现GWO智能灰狼优化算法优化支持向量机分类模型(SVC算法)项目实战
- macos可以升级到指定版本吗_MacOS升级10.13后变垃圾,教你如何降级自救
- 【中科大软院】还香不香?20软院考研四千字复盘