字符串全攻略
一、字符串函数是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 |