如何在LPCSTR类型的字符串中搜索指定的子字符串
判断方法
你代码里的LPCSTR是Windows平台定义的类型别名,本质就是以空字符结尾的常量ANSI字符串指针,等价于标准C的const char *,直接调用C标准库提供的strstr函数即可完成子串匹配判断。
具体实现逻辑
- 先引入
<string.h>头文件,该头文件声明了strstr函数 - 调用
strstr(foo, "hello"),该函数会返回hello在foo中首次出现的起始地址,若找不到匹配的子串则返回NULL - 只需判断返回值是否非空,即可确认
foo是否包含目标子串
可运行示例代码
#include <windows.h> #include <stdio.h> #include <string.h> int main() { typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR; LPCSTR foo = "hello world"; if (strstr(foo, "hello") != NULL) { printf("foo包含子串\"hello\"\n"); } else { printf("foo不包含子串\"hello\"\n"); } return 0; }
注意事项
- 如果你后续要处理宽字符版本的
LPCWSTR字符串,需要替换为宽字符对应的搜索函数wcsstr - 必须确保
foo是合法的空终止字符串,否则strstr会出现内存越界的未定义行为,你当前代码中foo指向字符串常量,本身自带空终止符,无需额外处理
内容的提问来源于stack exchange,提问作者user16872085
相关产品推荐
相关产品推荐

