最直接判断子串存在的方式是用str.find(“abc”) != std::String::npos;错误写法是== -1,因类型转换导致逻辑失效;需避免传入nullptr或未终止的char*,高频场景可考虑string_view或循环查找。

用 std::string::find 判断子串是否存在最直接
std::string::find 返回 size_t 类型,查不到时返回 std::string::npos(值为 -1 的无符号整数)。别用 == -1 判断,会因类型转换出错。
- 正确写法:
str.find("abc") != std::string::npos - 错误写法:
str.find("abc") == -1(-1被转成极大正数,永远不等) - 注意:返回值是位置索引,不是布尔值,但可安全用于条件判断
find 的重载版本和常见误用场景
有多个重载,最常用的是 find(const std::string&) 和 find(const char*)。传入 nullptr 或未以