字符串全攻略

字符串全攻略

一、字符串函数是C的基础,由于各个平台的差异,有着不同的版本:
1、C run-time libraries(win):有char(单字节,一般命名规则str...)和wchar(UNICODE多字节,一般命名规则wcs...)两个版本,必须视具体情况来选择用何种函数;
2、Win Platform SDK:综合了char和wchar版本,用宏来统一区分不同情况。例如:char环境的字符串函数lstrlenA和wchar的字符串函数lstrlenW,统一定义了宏来统一处理:
#ifdef UNICODE
    #define lstrlen  lstrlenW
#else
    #define lstrlen  lstrlenA
#endif // !UNICODE
3、linux平台,除比较函数外,char版本基本等同win平台的C run-time版本
4、linux平台对unicode的支持,详见:
http://www-128.ibm.com/developerworks/cn/linux/i18n/unicode/linuni/index.html
5、MFC的CString和STL的string是对对应平台的封装。

二、具体应用,小结如下:
1、字符串长度
char:  strlen
wchar:  wcslen
winsdk: lstrlen
linux:  strlen

二、字符串全拷贝
char: strcpy
wchar: wcscpy
winsdk:lstrcpy
linux: strcpy

三、字符串部分拷贝:
char: strncpy
wchar: wcsncpy
winsdk:lstrcpyn
linux: strncpy
注意:winsdk的最后的最大长度参数包括结束符'/0'计算在内,而其他版本不包括
例如:strncpy(string,"hello",3) ==> string="hel"
lstrcpyn(string,"hello",3) ==> string="he"

四、字符串比较函数
char: strcmp
wchar: wcscmp
winsdk:lstrcmp
linux: strcmp

五、字符串比较函数(忽略大小写)
char: stricmp
wchar: wcsicmp
winsdk:lstrcmpi
linux: strcasecmp

六、字符串部分比较
char: strncmp
wchar: wcsncmp
winsdk:无
linux: strncmp

七、字符串部分比较(忽略大小写)
char: strnicmp
wchar: wcsnicmp
winsdk:无
linux: strncasecmp

八、字符串追加
char: strcat
wchar: wcscat
winsdk:lstrcat
linux: strcat

你可能感兴趣的:(字符串全攻略)