Avatar ·

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; } ```