vector<string> MultiSplitStr(const string &s, const string &seperator) { vector<string> result; typedef string::size_type string_size; string_size i = 0; while(i!=s.size()){ int flag = 0; while(i!=s.size()&&flag==0){ flag = 1; for(string_size x =0;x<seperator.size();++x){ if(s[i]==seperator[x]){ ++i;flag=0;break; } } } flag=0;string_size j=i; while(j!=s.size()&&flag==0){ for(string_size x=0;x<seperator.size();++x){ if(s[j]==seperator[x]){ flag=1;break; } } if(flag==0) ++j; } if(i!=j){ result.push_back(s.substr(i,j-i));i=j; } } return result; }
时间: 2024-02-14 14:32:04 浏览: 24
这段代码是一个多字符分割字符串的函数。它接受一个字符串和一个分隔符作为参数,并将分隔后的子字符串存储在一个 vector 容器中。
函数中使用了两个循环。第一个循环用于查找分隔符的起始位置,将起始位置保存在变量 `i` 中。在这个循环中,使用了一个标志变量 `flag` 来判断是否找到了分隔符。如果找到了分隔符,则将 `i` 增加,并将 `flag` 设置为 0,从而继续查找下一个分隔符的起始位置。
第二个循环用于查找分隔符的结束位置,将结束位置保存在变量 `j` 中。在这个循环中,同样使用了 `flag` 变量来判断是否找到了分隔符。如果没有找到分隔符,则将 `j` 增加,继续查找下一个字符,直到找到分隔符为止。
在循环结束后,如果 `i` 不等于 `j`,则说明找到了一个子字符串,使用 `substr` 函数截取从 `i` 到 `j` 之间的子字符串,并将其添加到 vector 容器中。
最后,返回存储了分隔后子字符串的 vector 容器。
总结起来,这个函数的作用是根据多个字符的分隔符将一个字符串进行切割,然后将切割后的子字符串保存到 vector 容器中。
相关问题
vector<int> 转 vector<string>
您可以使用标准库中的 `std::transform` 函数来将一个 `vector<int>` 转换为 `vector<string>`。下面是一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main() {
std::vector<int> intVector = {1, 2, 3, 4, 5};
// 创建一个空的 vector<string>
std::vector<std::string> stringVector(intVector.size());
// 使用 std::transform 进行转换
std::transform(intVector.begin(), intVector.end(), stringVector.begin(), [](int num) {
return std::to_string(num);
});
// 打印转换后的 vector<string>
for (const auto& str : stringVector) {
std::cout << str << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果将会是:`1 2 3 4 5`,每个整数都转换成了字符串。
现在有一类型:std::vector<std::pair<std::string, std::vector<string>>>,请问如何分别取到std::pair中的std::string和std::vector<string>呢
要分别取到`std::pair`中的`std::string`和`std::vector<string>`,可以使用`std::get`函数。示例代码如下:
```cpp
#include <iostream>
#include <vector>
#include <string>
int main() {
std::vector<std::pair<std::string, std::vector<std::string>>> vec;
// 添加一些数据到vec中
vec.push_back(std::make_pair("pair1", std::vector<std::string>{"string1", "string2", "string3"}));
vec.push_back(std::make_pair("pair2", std::vector<std::string>{"string4", "string5"}));
vec.push_back(std::make_pair("pair3", std::vector<std::string>{"string6"}));
// 遍历vec,取出每个pair中的string和vector<string>
for (const auto& pair : vec) {
std::cout << "First string: " << std::get<0>(pair) << std::endl;
std::cout << "Second vector of string: ";
const auto& vectorOfString = std::get<1>(pair);
for (const auto& str : vectorOfString) {
std::cout << str << " ";
}
std::cout << std::endl;
}
return 0;
}
```
输出结果:
```
First string: pair1
Second vector of string: string1 string2 string3
First string: pair2
Second vector of string: string4 string5
First string: pair3
Second vector of string: string6
```
相关推荐
![hpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)