C++中按分隔符(string delimiter)分割字符串——如何实现split?
大家好!我刚开始学习C++,遇到了一个在其他语言中用一个函数就能解决的问题。我需要按分隔符(例如逗号字符或子字符串"::")将字符串拆分成多个部分。
在Python中,我写`"a,b,c".split(",")`就能得到一个列表。在C++中,我在标准库中找不到类似的功能。有来自C语言的`strtok`,但它操作的是`char*`,而我需要处理`std::string`。此外,`strtok`会修改原始字符串,并且不是线程安全的。
我尝试自己写了一个简陋的实现,但运行起来有问题:
```cpp
#include
#include
std::vector split(std::string s, std::string delimiter) {
size_t pos = 0;
std::vector tokens;
while ((pos = s.find(delimiter)) != std::string::npos) {
std::string token = s.substr(0, pos);
tokens.push_back(token);
s.erase(0, pos + delimiter.length());
}
tokens.push_back(s);
return tokens;
}
```