用模版写一个字符串拆分函数,要求,1,两个参数,待拆分字符串和拆分方式。2,拆分的子字符串存储在容器里并返回
时间: 2023-11-22 18:05:28 浏览: 26
以下是一个简单的字符串拆分函数模板:
```c++
#include <iostream>
#include <string>
#include <vector>
template<typename T>
std::vector<T> split(const T& str, const T& delimiter) {
std::vector<T> tokens;
size_t prev = 0, pos = 0;
do {
pos = str.find(delimiter, prev);
if (pos == std::string::npos) pos = str.length();
T token = str.substr(prev, pos-prev);
if (!token.empty()) tokens.push_back(token);
prev = pos + delimiter.length();
} while (pos < str.length() && prev < str.length());
return tokens;
}
int main() {
std::string str = "Hello, World!";
std::vector<std::string> tokens = split<std::string>(str, ", ");
for (const auto& token : tokens) {
std::cout << token << std::endl;
}
return 0;
}
```
该函数使用了模板来适应不同类型的字符串。它通过传入待拆分字符串和拆分方式来返回一个存储子字符串的容器。在函数内部,我们使用了一个循环来不断查找拆分方式,并将拆分出的子字符串存储在容器里。最后,我们返回这个容器。
在主函数中,我们调用了该函数,并传入了一个字符串和一个拆分方式。最后,我们循环遍历容器,并输出拆分出的子字符串。