setlocale函数原形为:
char *setlocale( int category, const char *locale );
对于简体中文可以使用如下设置:setlocale( LC_ALL, "chs" ); (编码ANSI)
char *setlocale( int category, const char *locale );
头文件:<locale.h>
所支持的操作系统为: Win 95, Win NT对于简体中文可以使用如下设置:setlocale( LC_ALL, "chs" ); (编码ANSI)
调用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" )函数来还原。
应用场景:
针对无法读取中文路径下的文件的问题,在解析配置文件前,加入一句: setlocale(LC_ALL,"chs");即可。