一句话理解
find 在字符串里查找子串,找到返回起始下标,找不到返回 npos。
为什么要学
判断是否包含某段文字。
讲解
s.find("ab")。找到最小的起始位置。
必须和 string::npos 比较判断失败,不要和 -1 乱比(类型是无符号)。
s.find(t, pos) 从 pos 开始找,可用来找下一次出现。
例子
string s = "abac";
auto p = s.find("ba");
cout << p;
输出:
1
ba 从下标 1 开始。
常见错误
if (s.find(t) == -1)在类型转换下有时碰巧能用,但不规范。用 npos。- find 只能找连续子串,不是子序列。