std::string 是否包含子串
时间: 2023-09-10 10:08:31 浏览: 84
可以使用 `std::string::find` 函数来判断一个字符串是否包含另一个字符串。该函数的用法是:
```cpp
size_t find (const string& str, size_t pos = 0) const noexcept;
```
其中,`str` 是要查找的子串,`pos` 是在主字符串中开始查找的位置,默认值为 0。如果找到了子串,则返回子串在主字符串中的起始位置;如果没找到,则返回 `std::string::npos`。
例如,下面的代码演示了如何判断字符串 `s` 是否包含子串 `sub`:
```cpp
#include <iostream>
#include <string>
int main() {
std::string s = "hello world";
std::string sub = "world";
if (s.find(sub) != std::string::npos) {
std::cout << "s contains sub.\n";
} else {
std::cout << "s does not contain sub.\n";
}
return 0;
}
```
输出结果为:
```
s contains sub.
```
相关问题
std::basic_string<tchar>
std::basic_string<tchar>是一个模板类,用于表示一个字符串,其中 tchar 是一个类型参数,可以是 char 或 wchar_t,具体取决于编译环境的配置。这个类提供了一系列的成员函数来操作字符串,包括获取长度、连接字符串、截取子串、查找子串等等。它是 C++ 标准库中的一部分,可以在包含 <string> 头文件后使用。
std::string 按=分割字符串并分别获取各个子串
在C++中,`std::string` 类型的对象通常使用 `substr()` 函数或者 `find()` 和 `getline()` 方法进行按字符或指定分隔符(如`=`, `,`, ` `等)分割。这里我们以`=`作为分隔符为例:
```cpp
#include <iostream>
#include <sstream> // 引入istringstream用于处理输入流
void splitString(const std::string &str) {
std::istringstream iss(str); // 创建一个输入流从原始字符串开始
std::string token; // 存储每个子串
while (iss >> token) { // 当输入流可以读取到下一个token时...
std::cout << "Token: " << token << std::endl;
}
if (iss.fail()) { // 检查是否还有未读完的部分
std::cerr << "Warning: Splitting failed with unexpected input" << std::endl;
}
}
int main() {
std::string str = "key1=value1, key2=value2, key3=value3";
splitString(str);
return 0;
}
```
在这个例子中,`splitString` 函数会将字符串按照`=`分割,并打印出每个子串。如果字符串中存在非分隔符的其他字符,`iss >> token` 会在遇到非数字或非字母字符时停止。
阅读全文