C++string split函数
时间: 2024-09-26 09:01:39 浏览: 55
C++标准库中的`std::getline()`函数并不是用于字符串分割的,但如果你需要将一个字符串按照特定分隔符切割成多个子串,通常会使用`std::stringstream`配合`std::getline()`或者直接遍历字符串并查找分隔符。不过,C++17之后引入了`std::split()`函数,它是 `<algorithm>` 模块的一部分,可以方便地完成这个任务。
`std::split()`函数的基本语法如下:
```cpp
template< class InputIt, class DelimiterIt, class OutputIterator >
void split( InputIt first, InputIt last, DelimiterIt delimiter_first, DelimiterIt delimiter_last,
OutputIterator result );
```
其中:
- `first` 和 `last` 是输入序列的范围,包含待分割的字符串。
- `delimiter_first` 和 `delimiter_last` 定义了分隔符的起始和结束位置。
- `OutputIterator` 类型指定了结果元素的存储位置,通常是容器的迭代器。
例如,你可以这样使用它:
```cpp
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
std::vector<std::string> splitString(const std::string& str, char delimiter) {
std::istringstream iss(str);
std::vector<std::string> tokens;
std::copy(std::istream_iterator<char>(iss),
std::istream_iterator<char>(),
std::back_inserter(tokens));
std::tokenize(tokens.begin(), tokens.end(), delimiter);
return tokens;
}
int main() {
std::string str = "Hello;World;C++";
std::vector<std::string> parts = splitString(str, ';');
for (const auto &part : parts) {
std::cout << part << '\n';
}
阅读全文