28. 找出字符串中第一个匹配项的下标C++
时间: 2025-06-28 09:20:39 AIGC 浏览: 35
### C++ 中查找字符串首次出现位置的方法
在 C++ 中,`std::string` 类提供了多种成员函数来实现这一功能。其中最常用的是 `find_first_of()` 和 `find()` 函数。
#### 使用 `find_first_of`
此函数返回指定字符集合中的任意一个字符第一次出现在目标字符串的位置[^1]:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello World!";
std::string chars = "Wo";
size_t pos = str.find_first_of(chars);
if (pos != std::string::npos) {
std::cout << "First occurrence of any character in '"
<< chars << "' is at position: "
<< pos << std::endl;
} else {
std::cout << "No occurrence of any character in '"
<< chars << "' found." << std::endl;
}
}
```
这段代码会输出:“First occurrence of any character in 'Wo' is at position: 6”。
#### 使用 `find`
如果要寻找整个子串而非单个字符,则应使用 `find()` 方法。该方法可以定位给定子串在整个字符串中首次出现的位置[^2]:
```cpp
#include <iostream>
#include <string>
int main() {
std::string haystack = "sadbutsad";
std::string needle = "sad";
size_t pos = haystack.find(needle);
if (pos != std::string::npos){
std::cout << "The substring \"" << needle
<< "\" was found at index "
<< pos << "." << std::endl;
} else{
std::cout << "Substring not found!" << std::endl;
}
return 0;
}
```
上述程序将会打印“The substring "sad" was found at index 0.”因为这是 `"sad"` 首次出现在源字符串中的索引位置[^4]。
对于更复杂的模式匹配需求,还可以考虑采用 KMP 算法等高级技术[^3]。
阅读全文
相关推荐


















