std::string 查找字符串,并知道其位置
时间: 2023-08-15 15:18:49 浏览: 221
您可以使用C++中的`std::string::find()`函数来查找一个字符串中是否包含另一个字符串,并且可以获取子字符串在字符串中的位置。
例如,如果您想要查找字符串`str`中子字符串`subStr`的位置,您可以使用以下代码:
```cpp
std::string str = "Hello World";
std::string subStr = "World";
size_t pos = str.find(subStr);
if (pos != std::string::npos) {
std::cout << "Substring found at position " << pos << std::endl;
} else {
std::cout << "Substring not found in the string." << std::endl;
}
```
在上述代码中,`std::string::find()`函数返回子字符串`subStr`在`str`中的位置。如果子字符串不在字符串中,则返回`std::string::npos`。因此,我们可以检查返回值是否等于`std::string::npos`来判断是否找到了子字符串。如果找到了子字符串,我们就可以使用返回值来获取子字符串在字符串中的位置。
相关问题
std::string 中 查找 子字符串
在 C++ 的 `std::string` 类型中,查找子字符串通常通过 `find` 函数或者 `substr` 函数配合来完成。以下是两个常见操作:
1. **`find` 函数**:
- `size_t find(const string& str, size_t pos = 0) const;`
这个函数返回目标子串 "str" 在原字符串中第一次出现的位置(从 `pos` 开始计数,如果找不到则返回 `npos`)。例如:
```cpp
std::string myStr = "Hello, World!";
size_t index = myStr.find("World");
if (index != std::string::npos)
std::cout << "Found at position: " << index << std::endl;
```
2. **`substr` 函数**:
- `string substr(size_t pos = 0, size_t len = npos) const;`
可以用于获取原字符串从指定位置开始到指定长度的子串。若未提供长度,则直到字符串结束。比如:
```cpp
std::string subStr = myStr.substr(myStr.find("World") + 6); // 获取 "World!" 部分
```
注意,`find` 返回的是子串的起始位置,而 `substr` 则是从这个位置提取子串。
std::string查找字符串
在C++标准库中,`std::string` 类型提供了一些内置函数来查找特定的子串。其中最常用的是 `find()` 和 `find_first_of()` 函数。
1. `find()` 函数:用于查找指定子串首次出现的位置。其原型是:
```cpp
size_t find(const char* str, size_t pos = 0) const;
```
或者
```cpp
size_t find(const string& substr, size_t pos = 0) const;
```
如果找到了子串,它会返回子串开始的位置(从0开始计数),如果没找到则返回 `npos`(通常为 `std::string::npos`,表示无效的位置)。
2. `find_first_of()` 函数:查找第一个出现的指定字符集合中的任何一个字符的位置。它的原型是:
```cpp
size_t find_first_of(const string& str, size_t pos = 0) const;
```
例如,假设我们有一个 `std::string` 对象 `str`,可以这样查找子串:
```cpp
size_t index = str.find("hello"); // 查找"hello"
if (index != std::string::npos) {
std::cout << "Substring found at position " << index << std::endl;
} else {
std::cout << "Substring not found" << std::endl;
}
```
阅读全文