std::string 实现字符串 splite 和jioin
时间: 2023-11-24 11:05:31 浏览: 127
可以使用 `std::string` 的一些成员函数实现字符串的 split 和 join 操作。
首先,实现字符串的 split 可以使用 `std::stringstream` 和 `std::getline` 来实现,示例代码如下:
```c++
#include <sstream>
#include <vector>
#include <string>
std::vector<std::string> split(const std::string& s, char delimiter) {
std::vector<std::string> tokens;
std::stringstream ss(s);
std::string token;
while (std::getline(ss, token, delimiter)) {
tokens.push_back(token);
}
return tokens;
}
```
上述代码中,使用 `std::stringstream` 将字符串转化为 `std::string` 流,然后使用 `std::getline` 函数根据指定的分隔符 `delimiter` 进行分割,将分割后的字符串存储到 `std::vector<std::string>` 中。
接下来,实现字符串的 join 可以使用 `std::stringstream` 和 `std::copy` 来实现,示例代码如下:
```c++
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
std::string join(const std::vector<std::string>& strs, const std::string& delimiter) {
std::stringstream ss;
std::copy(strs.begin(), strs.end(), std::ostream_iterator<std::string>(ss, delimiter.c_str()));
std::string joined_str = ss.str();
if (joined_str.size() > delimiter.size()) {
joined_str.erase(joined_str.size() - delimiter.size());
}
return joined_str;
}
```
上述代码中,使用 `std::stringstream` 将 `std::vector<std::string>` 中的字符串转化为 `std::string` 流,并使用 `std::copy` 函数将字符串按照指定的分隔符 `delimiter` 进行拼接,最后返回拼接后的字符串。需要注意的是,由于最后一个字符串也会跟随一个分隔符,因此需要在返回的字符串中将最后一个分隔符去掉。
阅读全文