wchar_t相关的一些

Posted on Wed 30 June 2010 in misc

1.单个宽字符的相关函数

wctomb 将wchar_t字符变成多字节表示

[codesyntax lang="cpp"]

wchar_t ch = L'中';
char mb[MB_CUR_MAX];
int len = wctomb(mb, ch);//成功则返回的值大于0

[/codesyntax]

与wctomb类似有int mbtowc ( wchar_t * pwc, const char * pmb, size_t max );

2.宽字符串的相关函数

wcstombs将一个wchar_t数组转为多字节表示

size_t wcstombs ( char * mbstr, const wchar_t * wcstr, size_t max );

其中max是mbstr的最大长度。\ 与mbstowcs相反的是size_t mbstowcs ( wchar_t * wcstr, const char * mbstr, size_t max );(max也是mbstr的长度)


重要的备注\ 以上的函数都与系统的locale相关,在执行前需要调用如下函数,否则可能执行失败。

[codesyntax lang="cpp"]

setlocale(LC_ALL, "")

[/codesyntax]

这个函数除了以上的功能外,在用ifstream读入含有宽字符的文件时也需要使用。这个函数的具体作用需要以后继续了解。


不那么重要的备注

以上的函数在linux下用的比较多,而在mfc下常用的是另外一些,需要在其他的文中介绍。


//wcout, wcin, wstring