c++查找一个字符串中的子串
时间: 2024-03-31 19:05:24 浏览: 20
在 C++ 中查找一个字符串中的子串可以使用 `find` 函数。以下是一个示例代码:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
std::string subStr = "world";
size_t found = str.find(subStr);
if (found != std::string::npos) {
std::cout << "Substring found at position: " << found << std::endl;
} else {
std::cout << "Substring not found." << std::endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个字符串 `str`,并在其中查找子串 `subStr`。使用 `find` 函数来查找子串,并返回它在主串中的位置。如果找到了子串,函数会返回子串在主串中的起始索引;如果找不到,则返回 `std::string::npos`。
相关问题
c++ stl 2个字符串 公共子串
c++ stl提供了一种简便的方式来找到两个字符串的公共子串,即使用string类中的find函数。find函数可以在一个字符串中查找另一个字符串的第一次出现位置。我们可以通过遍历其中一个字符串的所有子串,然后在另一个字符串中查找该子串是否存在来判断是否为公共子串。
具体的步骤如下:
1. 在主函数中定义两个字符串str1和str2,并初始化它们。
2. 使用两个嵌套循环遍历str1的所有子串,并分别将其存储在string类型的变量substr中。
3. 使用str2的find函数在str2中查找substr是否存在。如果存在,说明substr是两个字符串的公共子串,可以将其输出或保存。
4. 完成循环后,我们就可以得到所有的公共子串。
需要注意的是,该方法只能找到两个字符串的最短公共子串,如果需要找到所有的公共子串,需要进一步处理。另外,该方法的时间复杂度较高,因为涉及到了两个嵌套循环,所以在处理较长的字符串时效率可能较低。
总结:c++ stl提供了一种简便的方式来找到两个字符串的公共子串,即使用string类中的find函数。可以通过遍历其中一个字符串的所有子串,并在另一个字符串中查找子串是否存在来判断是否为公共子串。该方法的时间复杂度较高,处理较长的字符串时可能效率较低。
c++ 字符串查找子串
以下是C++中字符串查找子串的例子:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string a = "abcdefghigklmn";
string b = "def";
string c = "123";
string::size_type idx;
idx = a.find(b); // 在a中查找b
if (idx == string::npos) // 不存在
cout << "not found\n";
else // 存在
cout << "found\n";
return 0;
}
```
该程序中,使用了string类的find()函数来查找子串。如果子串存在,则返回子串在原字符串中的起始位置;如果不存在,则返回string::npos。在该程序中,我们定义了三个字符串a、b、c,其中a为原字符串,b为要查找的子串,c为一个不存在于a中的字符串。程序首先在a中查找b,如果存在,则输出“found”;如果不存在,则输出“not found”。