答案:C++中可通过stringstream、find与substr或第三方库实现字符串分割。使用stringstream配合getline适合单一分隔符;find和substr更灵活,可处理多分隔符及连续分隔情况;C++20及Abseil等库提供更简洁方法,如absl::StrSplit。

在C++中,标准库没有提供像Python中split()那样直接的字符串分割函数,但可以通过多种方式实现字符串分割。下面介绍几种常用且实用的方法。
std::stringstream分割字符串这是最常见、最简单的方式之一,适用于以空格或单个分隔符分割字符串。
说明:将字符串载入stringstream对象,利用其自动按空白字符(空格、换行、制表符)分割的特性提取子串。
getline使用示例代码:
立即学习“C++免费学习笔记(深入)”;
#include <sstream>
#include <vector>
#include <string>
<p>std::vector<std::string> split(const std::string& str, char delim) {
std::vector<std::string> result;
std::stringstream ss(str);
std::string item;</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">while (std::getline(ss, item, delim)) {
result.push_back(item);
}
return result;}
调用split("apple,banana,orange", ',')会返回包含三个水果名称的vector。
find和substr手动分割这种方法更灵活,可以处理复杂分隔逻辑或多个连续分隔符。
说明:通过std::string::find查找分隔符位置,再用substr截取子串。
示例代码:
立即学习“C++免费学习笔记(深入)”;
std::vector<std::string> split(const std::string& str, const std::string& delim) {
std::vector<std::string> result;
size_t start = 0;
size_t end = str.find(delim);
<pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">while (end != std::string::npos) {
result.push_back(str.substr(start, end - start));
start = end + delim.length();
end = str.find(delim, start);
}
result.push_back(str.substr(start)); // 添加最后一段
return result;}
现代C++或外部库提供了更简洁的写法。
说明:C++20引入了<ranges>,虽然还没有内置split,但可以用第三方方案如Boost。
absl::StrSplit非常方便例如使用Abseil:
#include "absl/strings/str_split.h"
std::vector<std::string> parts = absl::StrSplit("a,b,c", ',');
基本上就这些常用方法。对于大多数项目,用stringstream配合getline已经足够。需要更高性能或更复杂规则时,考虑手动实现或引入轻量工具库。关键是根据分隔符类型和数据特点选择合适方式。不复杂但容易忽略的是对空输入或连续分隔符的处理,建议在实际使用中加上边界检查。
以上就是C++如何分割字符串_C++ 字符串分割方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号