新闻中心
C++如何分割字符串?(split函数实现示例)
标准C++无内置split函数,常用三种实现:stringstream适用于单字符或空白分隔;find+substr支持多字符分隔符且灵活可控;C++20的views::split提供懒求值、零拷贝的单字符分割。

标准C++没有内置的 split 函数,但可以用 std::string 配合 std::stringstream、std::string::find + std::string::substr,或 C++20 的 std::views::split 实现。下面给出三种常用、实用的实现方式。
用 stringstream 按空格或单字符分隔
适合简单场景,比如按空格、制表符、换行符等空白字符分割(默认行为),或指定单一分隔符。
#include <vector>
#include <string>
#include <sstream>
<p>std::vector<std::string> split_by_space(const std::string& s) {
std::vector<std::string> tokens;
std::stringstream ss(s);
std::string token;
while (ss >> token) { // 自动跳过连续空白
tokens.push_back(token);
}
return tokens;
}</p><p>// 指定单一分隔符(如 ',')
std::vector<std::string> split_by_char(const std::string& s, char delim) {
std::vector<std::string> tokens;
std::string token;
std::istringstream tokenStream(s);
while (std::getline(tokenStream, token, delim)) {
tokens.push_back(token);
}
return tokens;
}
注意:std::getline 版本对连续分隔符(如 "a,,b")会生成空字符串;若想跳过空项,需额外判断 token.empty()。
用 find + substr 手动切分(支持多字符分隔符)
更灵活,可处理任意长度的分隔符(如 "::"、">"),也便于控制是否保留空字段。
std::vector<std::string> split(const std::string& s, const std::string& delimiter) {
std::vector<std::string> tokens;
size_t start = 0;
size_t end = s.find(delimiter);
while (end != std::string::npos) {
tokens.push_back(s.substr(start, end - start));
start = end + delimiter.length();
end = s.find(delimiter, start);
}
tokens.push_back(s.substr(start)); // 加入最后一段
return tokens;
}
- 支持任意长度的分隔符字符串
- 连续分隔符(如
"a||b|||c")会产生空字符串,如需过滤,加一句if (!token.empty()) tokens.push_back(token); - 分隔符未找到时,
find返回npos,循环结束,剩余部分直接加入
C++20:用 views::split(懒求值、零拷贝)
如果项目支持 C++20,推荐用 std::views::split,它返回一个视图(view),不立即拷贝字符串,内存友好,适合只读遍历场景。
#include <string>
#include <ranges>
#include <vector>
#include <algorithm>
<p>std::vector<std::string> split_cxx20(const std::string& s, char delim) {
auto split_view = s | std::views::split(delim);
std::vector<std::string> result;
for (auto chunk : split_view) {
std::string part(chunk.begin(), chunk.end());
result.push_back(part);
}
return result;
}
注意:目前 std::views::split 只支持单字符分隔符(char 或 std::string_view{1}),不支持多字符字符串作为分隔符;如需多字符,仍建议用 find+substr 方式。
基本上就这些。选哪种取决于你的 C++ 标准、分隔符复杂度和性能要求——简单分隔用 stringstream,通用可控用 find+substr,C++20 项目且追求简洁可读可用 views::split。
以上就是C++如何分割字符串?(split函数实现示例)的详细内容,更多请关注其它相关文章!
# c++
# stream
# 分隔符
# 多字
# 都是
# 三种
# go
# 汕头网站建设比较好
# 杭州seo网站推广效果
# 亚马逊seo如何做销售
# 广东定制网站建设设计
# 略阳短视频seo
# 大良外贸网站建设
# 安阳网站建设排名
# 网站建设暗藏套路
# 时代seo优化价格比较
# 苏仙区网站建设推广公司
# 管理机制
# 如何实现
# 何为
# 跳过
# 尼克
# 如需
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
如何在 Windows 11 中启动游戏手柄设置
特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相
Mac终端命令大全_Mac常用Terminal指令速查
sublime如何配置Python开发环境_将sublime打造成轻量级Python IDE
CSS布局中意外空白:解决padding-top导致的顶部间距问题
J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
J*aScript中管理异步API调用:确保操作顺序与数据一致性
Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值
深入理解与实现最大堆的Heapify过程:常见错误与修正
在哪找SublimeJ远程工具_SFTP插件配置教程
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
excel如何生成目录 excel一键生成工作表目录超链接
ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版
C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能
J*aScript实现单选按钮与关联输入框的联动禁用教程
Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
mysql如何设置表访问权限_mysql表访问权限配置
《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
Go语言中动态执行代码字符串的策略与实践
mc.js游戏直达 mc.js网页免下载版本秒进地址
解决Flask中Quill编辑器内容提交失败及TypeError的指南
Pyrogram与g4f集成:异步编程实践与常见错误解决
印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】
学习通网页版官方登录 超星学习通电脑端入口指南
Golang如何安装Swagger工具_GoSwagger文档生成环境
yy漫画网页版官方入口_yy漫画官网登录页面链接
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
支付宝如何设置安全保护_支付宝安全设置的全面教程
AO3最新入口2025公告_AO3中文官网合集
机器学习中对数变换预测结果的反向还原
LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样
千牛数据看板网页版_千牛数据看板网页版访问方法
CSS Grid如何控制元素对齐_align-items与justify-items组合使用
c++项目目录结构应该如何组织_c++工程化项目结构规范
如何提高微信支付的安全性_微信支付安全防护与设置建议
谷歌google账号注册详细步骤 谷歌账号注册官方教程
微博网页版首页入口 微博电脑端官网登录链接
谷歌google账号怎么注册账号 谷歌账号注册官方流程
消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台
外媒分析《GTA6》定价:卖100美元可以但真没必要!
Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口


2025-12-14
浏览次数:次
返回列表
}
tokens.push_back(s.substr(start)); // 加入最后一段
return tokens;
}