常用字符串处理函数

本文详细介绍了C/C++中用于字符串处理的标准库函数,如`strcat`、`strcmp`等,以及Windows API提供的特定字符串操作函数,如`CharLower`、`wsprintf`等。这些函数涵盖了字符串转换、比较、拷贝、查找等多种功能,对于C/C++编程和Windows应用开发至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C/C++常用字符串处理函数:

功能ANSI版本UNICODE版本通用版本备注
转换为双精度浮点数atof_wtof_tstof
转换为整型atoi_wtoi_tstoi
转换为长整型atol_wtol_tstol
判断字符是不是数字或字母isalnumiswalnum_istalnum
判断字符是不是字母isalphaiswalpha_istAlpha
判断字符是不是ascii字符isasciiiswasciiistascii
判断字符是不是控制字符iscntrliswcntrl_istcntrl
判断字符是不是数字isdigitiswdigit_istdigit
判断字符是不是可打印字符isgraphiswgraph_istgraph不含空格
判断字符是不是小写字符isloweriswlower_istlower
判断字符是不是可打印字符isprintiswprint_istprint包含空格
判断字符是不是可打印字符ispunct_iswpunct_istpunct除字母,数字和空格外
判断字符是不是空格类字符isspaceiswspace_istspace空格类字符指0x09~0x0D和0x20
判断字符是不是大写字母isupperiswupper_istupper
判断字符是不是16进制字符isxdigitiswxdigit_istxdigit16进制字符指A-F、a-f,0-9
查找字符首次出现的位置memchrwmemchr返回指向字符首次出现位置的指针或者NULL
比较两个字符串前n个字符memcmpwmemcmp
拷贝缓冲区前n个字节memcpywmemcpy源缓冲区和目标缓冲区不可重叠
拷贝缓冲区前n个字节memcpy_swmemcpy_smemcpy的安全版本,但源缓冲区和目标缓冲区也不可重叠
拷贝缓冲区前n个字节memmovewmemmove源缓冲区和目标缓冲区可重叠
拷贝缓冲区前n个字节memmove_swmemmove_s
缓冲区前n个位置写入指定字符memsetwmemset
字符串拼接strcatwcscat_tcscat源缓冲区和目标缓冲区不可重叠
字符串拼接strcat_swcscat_s_tsccat_s源缓冲区和目标缓冲区不可重叠
查找字符首次出现位置strchrwcschr_tcschr
字符串比较strcmpwcscmp_tcscmp根据ascii排序来比较字符串
字符串比较strcollwcscoll_tcscoll依赖于当前本地设置的LC_COLLATE类别
字符串拷贝strcpywcscpy_tcscpy源字符串和目标字符串不可重叠
字符串拷贝strcpy_swcscpy_s_tcscpy_sstrcpy 安全版本,源字符串和目标字符串不可重叠
strcspnwcscspn_tcscspn返回开头不包含指定字符串内字符的字符数
获取字符串长度strlenwcslen_tcslen
字符串拼接strncatwcsncat_tcsncat源缓冲区和目标缓冲区不可重叠
字符串拼接strncat_swcsncat_s_tscncat_s源缓冲区和目标缓冲区不可重叠
查找字符首次出现位置strchrwcschr_tcschr
字符串比较strcmpwcscmp_tcscmp根据ascii排序来比较字符串
字符串比较strcollwcscoll_tcscoll依赖于当前本地设置的LC_COLLATE类别
字符串拷贝strcpywcscpy_tcscpy源字符串和目标字符串不可重叠
字符串拷贝strcpy_swcscpy_s_tcscpy_sstrcpy 安全版本,源字符串和目标字符串不可重叠
查找strcspnwcscspn_tcscspn返回开头不包含指定字符串内字符的字符数
查找strpbrkwcspbrk_tcspbrk
查找字符最后出现的位置strrchrwcsrchr_tcsrchr
查找strspnwcsspn_tcsspn返回第一个不包含于指定字符串内的字符的位置
查找子串strstrwcsstr_tcsstr
获取时间_strtime_wstrtime把当前时间拷贝到缓冲区
获取时间_strtime_s_wstrtime_s_strtime安全版本
转换为双精度浮点数strtodwcstod_tcstod
转换为单精度浮点数strtofwcstof_tcstof
分割字符串strtokwcstok_tcstok
分割字符串strtok_swcstok_s_tcstok_s
转换为长整型strtolwcstol_tcstol
转为小写tolowertowlower_totlower
转为大写touppertowupper_totupper

WIN32字符串处理函数

功能ANSI版本UNICODE版本通用备注
判断字符是不是字母IsCharAlphaAIsCharAlphaWIsCharAlpha
判断字符是不是字母或数字IsCharAlphaNumericAIsCharAlphaNumericWIsCharAlphaNumeric
判断是不是小写字母IsCharLowerAIsCharLowerWIsCharLower
判断是不是大写字母IsCharUpperAIsCharUpperWIsCharUpper
字符串转为小写CharLowerACharLowerWCharLower
字符串转为小写CharLowerBuffACharLowerBuffWCharLowerBuff
字符串转为大写CharUpperACharUpperWCharUpper
字符串转为大写CharUpperBuffACharUpperBuffWCharUpperBuff
格式化字符串wsprintfAwsprintfWwsprintf
查找下一个字符CharNextACharNextWCharNext可以处理同时包含单字节字符和多字节字符的字符串
查找上一个字符CharPrevACharPrevWCharPrev可以处理同时包含单字节字符和多字节字符的字符串
字符串拼接lstrcatAlstrcatWlstrcat
字符串比较lstrcmpAlstrcmpWlstrcmp大小写敏感
字符串表lstrcmpiAlstrcmpiWlstrcmpi大小写不敏感
字符串拷贝lstrcpyAlstrcpyWlstrcpy
字符串拷贝lstrcpynAlstrcpynWlstrcpyn
获取字符串长度lstrlenAlstrlenWlstrlen

参考:
https://docs.microsoft.com/en-us/windows/win32/menurc/strings
https://docs.microsoft.com/zh-tw/cpp/c-runtime-library/reference/crt-alphabetical-function-reference?view=vs-2019

### C语言常用字符串处理函数 #### 1. `sprintf` 函数 头文件:`<stdio.h>` 格式:`sprintf(目标字符串的地址,格式字符串和待写入项的列表)` 功能:将多个元素组合成一个字符串。例如: ```c char str[40] = "hello world!"; int year = 2020; char final[40]; sprintf(final, "%s %d\n", str, year); puts(final); ``` 这段代码会输出 `"hello world! 2020"`[^1]。 #### 2. `strlen` 函数 头文件:`<string.h>` 功能:计算字符串长度并返回其值作为整型数。当遇到第一个 `\0` 结束符时停止计数。 #### 3. `strcpy` 和 `strncpy` 函数 - `strcpy`: 将源字符串复制到目的字符串中,直到遇到终止符为止。 - `strncpy`: 类似于 `strcpy`,但如果 n 超过源字符串长度,则填充剩余空间为 '\0' 或者仅复制前 n 个字符。 这两个函数都返回指向目的地字符串指针。 #### 4. `strcat` 和 `strncat` 函数 - `strcat`: 把 src 所指向的字符串追加到 dest 的结尾处,并在其后加上结束符'\0'. - `strncat`: 同样用于连接两个字符串,但是最多只会附加由参数指定数量的字符。 它们同样返回拼接后的字符串首地址。 #### 5. `strcmp`, `strncmp` 比较两个字符串大小关系,如果相等则返回0;小于则负数;大于正数。对于带 'n' 版本来说,在比较之前先限定最大比较长度。 以上提到的一些特性表明,许多标准库提供的操作都会在检测到首个空字节(`\0`)之后立即停止工作,而不会继续扫描后续可能存在的其他数据[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值