std::string 如何使用 :: 分割字符串,并获取倒数第二个子字符串
时间: 2024-11-06 15:16:46 浏览: 44
`std::string` 在 C++ 中是一个标准库中的字符序列容器,可以用来处理字符串操作。如果想通过 `::` 分隔字符串并获取倒数第二个子字符串,通常需要先使用 `find` 或 `substr` 函数来找到特定的分隔符位置,然后根据这些位置进行切割。
以下是一个示例:
```cpp
#include <iostream>
#include <string>
std::string get_substring(const std::string &str, char delimiter) {
size_t pos = str.find(delimiter); // 查找第一个分隔符的位置
if (pos == std::string::npos) { // 如果没有找到,返回整个字符串(默认情况)
return str;
}
std::vector<std::string> parts; // 存储分割后的部分
parts.push_back(str.substr(0, pos)); // 获取第一个部分
while (true) {
pos = str.find(delimiter, pos + 1); // 在剩余部分查找下一个分隔符
if (pos == std::string::npos) { // 找不到更多分隔符了,结束循环
break;
}
parts.push_back(str.substr(pos + 1)); // 获取新的部分,跳过分隔符
}
return parts[parts.size() - 2]; // 返回倒数第二个子字符串
}
int main() {
std::string input = "parent::child::grandchild";
char delimiter = '::';
std::cout << "The second-to-last substring is: " << get_substring(input, delimiter) << std::endl;
return 0;
}
```
在这个例子中,`get_substring` 函数会从给定的 `str` 开始,每次查找 `delimiter` 并将其后面的子串添加到结果列表中,直到找不到更多的分隔符为止。最后返回列表中的倒数第二个元素,即倒数第二个子字符串。
阅读全文