strlen,获取到的是字节数,中文占两个字节。
如何获取字符数,无论中文英文,标点符号,都按一个字符计算呢?这里提供其中的一个方法。那就是通过MultiByteToWideChar函数,将CString或char数据类型,转换为宽字符,通过wcslen获取长度。在宽字符集中,中英文,标点,都是按一个字符进行记数的。下面是示例代码:
#include <iostream>
#include "windows.h"
using namespace std;
void main()
{
char str[] = "就知道玩dota!";
wchar_t wstr[256];
MultiByteToWideChar (CP_ACP, 0, str, -1, wstr, 256);
int ilen,iwlen;
ilen = iwlen = -1;
cout<<strlen(str)<<endl;
cout<<wcslen(wstr)<<endl;
}
以下是运行结果:
13
9
请按任意键继续. . .