setlocale函数
函数原型:char* setlocale (int category, const char* locale);
setlocale位于头文件,setlocale() 函数既可以用来对当前程序进行地域设置(本地设置、区域设置),也可以用来获取当前程序的地域设置信息,使用setlocale需要两个参数
第一个参数category:
用来设置地域设置的影响范围。地域设置包含日期格式、数字格式、货币格式、字符处理、字符比较等多个方面的内容,当前的地域设置可以只影响某一方面的内容,也可以影响所有的内容,
category 的值不能随便设置,必须使用 <locale.h> 中定义的宏
第二个参数locale:
用来设置地域设置的名称(字符串),也就是设置为哪种地域,对于不同的平台和不同的编译器,地域设置的名称可能会不同,C语言标准没有干预太多。C语言标准只是规定,各个组织在实现编译器时至少要支持以下三个名称:
setlocale函数的返回值:
如果 setlocale() 执行成功,那么返回一个指向字符串的指针,该字符串包含了当前地域设置的名称。也就是说,setlocale() 会将当前地域设置的名称返回
如果 setlocale() 执行失败(例如为 locale 指定的名称不存在,就会导致地域设置失败),那么返回空指针NULL
如果程序中没有用setlocale函数设置地域等其他参数,那么程序运行时locale 被初始化为默认的 C locale,其采用的字符编码是所有本地 ANSI 字符集编码的公共部分,是用来书写C语言源程序的最小字符集,
下面用setlocale来得到当前使用的地域设置
char *p; p = setlocale(LC_ALL, NULL);
printf("%s\n", p);
运行结果:
从上面可以看出当前编译器使用的地域设置是C,如果想用宽字符来输出中文,却仍然使用默认的地域设置(C)就会出现问题,下面尝试用setlocale来解决宽字符输出中文的问题
wchar_t ss[];
char *p; p = setlocale(LC_ALL, NULL);
ss[] = _T('中');
ss[] = _T('文');
ss[] = _T('\0');
wprintf(L"%ls\n", ss); printf("地域设置:%s\n", p);
运行结果:
从上面的运行结果可以看出'中' '文'两个字并没有被正确的输出,因为locale被初始化为默认的C,其采用的字符编码是所有本地ANSI字符集编码的公共部分,是用来书写C语言源程序的最小字符集,下面用setlocale来把地域设置为简体中文,修改后的代码如下:
wchar_t ss[];
char *p; p = setlocale(LC_ALL, "");
ss[] = _T('中');
ss[] = _T('文');
ss[] = _T('\0');
wprintf(L"%ls\n", ss); printf("地域设置:%s\n", p);
运行结果:
因为操作系统是中文环境,所以上面的代码中可以改为效果是一样的
setlocale()函数详解——C语言的更多相关文章
-
malloc函数详解 C语言逻辑运算符
今天写线性表的实现,又遇到了很多的难题,C语言的指针真的没学扎实.很多基础都忘了. 一是 :malloc 函数的使用. 二是:C语言逻辑运算符. 一.原型:extern void *malloc(un ...
-
【C语言】printf函数详解
C语言printf函数详解 一.相关基础知识 请求printf()打印变量的指令取决于变量的类型,例如打印整数用%d符号,打印字符用%c符号,这些符号称为转换说明(conversion specifi ...
-
【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)
本文转自: C语言itoa()函数和atoi()函数详解(整数转字符C实现) 介绍 C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. int/float to ...
-
C语言memset函数详解
C语言memset函数详解 memset() 的作用:在一段内存块中填充某个给定的值,通常用于数组初始化与数组清零. 它是直接操作内存空间,mem即“内存”(memory)的意思.该函数的原型为: # ...
-
Netsuite Formula >; Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt
PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...
-
loadrunner&#160;脚本开发-&#160;web_url函数详解
脚本开发- web_url函数详解 by:授客 QQ:1033553122 加载指定url的web页面(GET请求) C语言函数 int web_url( const char *StepName ...
-
详解 Go 语言中的 time.Duration 类型
swardsman详解 Go 语言中的 time.Duration 类型swardsman · 2018-03-17 23:10:54 · 5448 次点击 · 预计阅读时间 5 分钟 · 31分钟之 ...
-
CString 的成员函数详解
CSTRING的成员函数详解 typedef ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > CString;CStrin ...
-
详解Go语言调度循环源码实现
转载请声明出处哦~,本篇文章发布于luozhiyun的博客: https://www.luozhiyun.com/archives/448 本文使用的go的源码15.7 概述 提到"调度&q ...
随机推荐
-
JS预解析
1.在逐行读js代码前,解析器会先提取所有声明的var变量和函数 js解析器会先把脚本里所有var变量声明读一遍,但是它只读变量名字,不读变量值,一开始它会赋给所有读到的var变量一个[未定义]的值. ...
-
安装Windows Metasploit Framework
Installing the Metasploit Framework on Windows 1. Visit http://windows.metasploit.com/metasploitfram ...
-
lintcode:二叉树的所有路径
二叉树的所有路径 给一棵二叉树,找出从根节点到叶子节点的所有路径. 样例 给出下面这棵二叉树: 1 / \ 2 3 \ 5 所有根到叶子的路径为: [ "1->2->5" ...
-
理解Java的封装与接口
1.封装,即保留有限的外部接口(interface),隐藏具体实施细节. 2.封装在生活中很常见.比如下面是一个充电电筒: 一个用户即使不看说明书,也可以猜到这个电筒的操作: 开关和充电.这个电筒用一 ...
-
bash 读入文件
Suppose we have a file contains the following information, termed input_file: A 0 B 1 C ...
-
解决outlook无法启动
当outlook出现上述问题时,修复的方案: 1.在打开的命令提示符窗口中,输入"cd C:\Program Files\Microsoft Office\Office12"然后回 ...
-
Python编程中常用的12种基础知识总结
原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时 ...
-
node.js之setTimeout()、clearTimeout()与 setInterval()与clearInterval()
1.setTimeout函数与clearTimeout函数 setTimeout(cb,ms,[arg],[...])延时一定时间执行回调函数该函数中cb参数为必填函数,为需要执行的回调函数ms为经过 ...
-
react-native-deprecated-custom-components
速记:从0.44版本开始,Navigator被从react native的核心组件库中剥离到了一个名为react-native-deprecated-custom-components的单独模块中. ...
-
c++中sizeof的理解
1. 例题 #include <iostream> class A {}; class B { char m_data; }; class C { ]; }; class D { char ...