| 项目搜索 |
| |
|
代码片段库:
查看代码片段
浏览
| 提交新的代码片段
| 创建代码包
多字节函数库系列:一般处理:cy_mltlen()
|
类型:
Function |
类别:
Other
|
许可证:
GNU Library Public License |
语言:
C++
|
描述:
获取多字节字符串的字符数。与locale设置无关。
|
该代码片段的版本系列:
片段ID |
下载版本 |
提交时间 |
提交人 |
删除 |
4572 | 0.1 | 2002-06-26 21:00 | renxiao | |
点击"下载版本"来下载该代码片段.
最新版本的代码片段: 0.1
/*-------------------------Own_lib函数库系列 mltlen.cc-------------------------
cy_mltlen() /mltlen.o /libcyfunc.a
描述: 当处理多字节文本文件(如中文)时, 如欲获得字符串的字节数, 可调用标准strlen()
函数, 但那是字节数而非字符数. mbstowcs()标准函数可完成这一任务, 但它又与环
境的locale设置有关.
利用iconv转换函数, 我们可独立于系统locale设置而操作多字节字符串, 本函数检
测并返回多字节字符串的字符数.
string:
需检测字符数的多字节字符串.
encode:
源字符串的编码类型字符串(如中文的"GB2312"/"Big5"/"GB18030"等).
返回值:
返回待检测字符串string的字符数, 如果碰到错误返回-1.
作者: 任逍 |2002.06.15.
版权: GNU General (Library) Public License (GPL/LGPL)
* 编辑器: vim-6.0 |操作系统: TurboLinux7.0简体中文版 *
------------------------------------------------------------------------------*/
#include <string.h> // use for strlen()
#include "cyinclude/cyutf.h" // use for cy_toutf8() and cy_utf8chars()
#include "cyinclude/cymbs.h"
size_t cy_mltlen(const char * string, const char * encode)
{
size_t str_chars = 0, tmp_length = 0;
char * tmp_str = NULL;
tmp_length = 6 * strlen(string);
if (!(tmp_str = new char[tmp_length]))
return (size_t)-1;
if ( cy_toutf8(tmp_str, tmp_length, string, encode) == (size_t)-1 )
{
delete[] tmp_str;
return (size_t)-1;
}
cy_utf8chars((const unsigned char*)tmp_str, tmp_length, &str_chars);
return str_chars;
}
如果您修改了一个代码片段并且觉得很应该让别人共享,您可以把这作为这个代码片段的最新版本提交上来. |
|