strlen,wcslen,lstrlen函数与sizeof运算符
2011-03-14 14:25
525 查看
#ifdef UNICODE
#define lstrlen lstrlenW
#else
#define lstrlen lstrlenA
#endif
所以在Unicode下,lstrlen等同lstrlenW(LPCWSTR lpString),在非Unicode下等同lstrlenA(LPCSTR lpString)。而lstrlenW又等同于wcslen,lstrlenA又等同于strlen,只不过一个是C的标准函数,一个是WinAPI函数。
所以只需讨论strlen,wcslen与sizeof的区别。
#include "stdafx.h"
#include "windows.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char str1[]="abcde";
char str2[]="我是中国人";
WCHAR str3[]=L"abcde";
WCHAR str4[]=L"我是中国人";
cout<<strlen(str1)<<endl;
cout<<sizeof(str1)<<endl;
cout<<endl;
cout<<strlen(str2)<<endl;
cout<<sizeof(str2)<<endl;
cout<<endl;
cout<<wcslen(str3)<<endl;
cout<<sizeof(str3)<<endl;
cout<<endl;
cout<<wcslen(str4)<<endl;
cout<<sizeof(str4)<<endl;
cout<<endl;
return 0;
}
输出结果:
5
6
10
11
5
12
5
12
请按任意键继续. . .
由此可见,strlen返回的是字节数(对中英文不一致,中文占两个字节,不包括'/0'),而wcslen返回的是字符数(对中英文一致)。而sizeof返回的是字节数(包含'/0',而'/0'在Unicode下也是占两个字节的)。
#define lstrlen lstrlenW
#else
#define lstrlen lstrlenA
#endif
所以在Unicode下,lstrlen等同lstrlenW(LPCWSTR lpString),在非Unicode下等同lstrlenA(LPCSTR lpString)。而lstrlenW又等同于wcslen,lstrlenA又等同于strlen,只不过一个是C的标准函数,一个是WinAPI函数。
所以只需讨论strlen,wcslen与sizeof的区别。
#include "stdafx.h"
#include "windows.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
char str1[]="abcde";
char str2[]="我是中国人";
WCHAR str3[]=L"abcde";
WCHAR str4[]=L"我是中国人";
cout<<strlen(str1)<<endl;
cout<<sizeof(str1)<<endl;
cout<<endl;
cout<<strlen(str2)<<endl;
cout<<sizeof(str2)<<endl;
cout<<endl;
cout<<wcslen(str3)<<endl;
cout<<sizeof(str3)<<endl;
cout<<endl;
cout<<wcslen(str4)<<endl;
cout<<sizeof(str4)<<endl;
cout<<endl;
return 0;
}
输出结果:
5
6
10
11
5
12
5
12
请按任意键继续. . .
由此可见,strlen返回的是字节数(对中英文不一致,中文占两个字节,不包括'/0'),而wcslen返回的是字符数(对中英文一致)。而sizeof返回的是字节数(包含'/0',而'/0'在Unicode下也是占两个字节的)。
相关文章推荐
- strlen,wcslen,lstrlen函数与sizeof运算符
- strlen,wcslen,lstrlen函数与sizeof运算符
- strlen,wcslen,lstrlen函数与sizeof运算符
- strlen,wcslen,lstrlen函数与sizeof运算符
- strlen()函数和sizeof()运算符的区别
- sizeof运算符与求字符串长度函数strlen的区别
- sizeof()运算符与strlen()函数的区别
- 关于sizeof运算符和strlen()函数的个别区别分析
- sizeof(...)运算符strlen(...)函数的区别与练习
- 数据类型与strlen()函数sizeof()运算符
- strlen,wcslen,lstrlen,sizeof及wstring
- c++中的strlen 函数和sizeof运算符的比较
- strlen和sizeof函数区别(深入理解)
- C++ sizeof() 函数和strlen()函数总结
- sizeof, strlen, 指针和数组作为函数参数
- sizeof strlen wcslen tcslen 比较
- sizeof()和lstrlen()和strlen()区别
- C语言学习5:数组定义,数组名的含义,数组作为函数参数,数组赋值,数组左右移动,最大最小,反向遍历,冒泡排序,sizeof 和strlen区别,gets和puts,strcpy,strcat,strcmp,strchr,strstr,strlen
- sizeof strlen wcslen tcslen 比较
- 怎样证明sizeof()是一个运算符,而不是函数