全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++如何实现字符串分割_C++ split字符串的函数封装与实现

C++中可通过std::stringstream与std::getline结合实现字符串分割,支持单字符分隔符并可过滤空字符串;对于多字符分隔符则需使用std::string::find与substr手动处理,适用于CSV解析等场景。

在C++中,标准库并没有提供像Python中split()那样直接的字符串分割函数,但可以通过结合std::getline或手动查找分隔符的方式实现。下面介绍一种通用、可复用的split函数封装方法。

使用std::getline实现split函数

最常见且简洁的方法是利用std::stringstream配合std::getline,以指定字符为分隔符进行切割。

  • 支持单字符分隔符(如逗号、空格、制表符等)
  • 代码简洁,易于理解
  • 自动处理连续分隔符和边界情况

示例实现:

#include 
#include 
#include 

std::vector split(const std::string& str, char delim) { std::vector result; std::stringstream ss(str); std::string item;

while (std::getline(ss, item, delim)) {
    result.push_back(item);
}

return result;

}

处理多个空白字符或过滤空字符串

默认的getline方式会保留空字段(例如"a,,b"会得到三个元素),如果需要跳过空字符串,可以在加入结果前判断。

改进版本:

std::vector split(const std::string& str, char delim) {
    std::vector result;
    std::stringstream ss(str);
    std::string item;
while (std::getline(ss, item, delim)) {
    if (!item.empty()) {  // 忽略空字符串
        result.push_back(item);
    }
}

return result;

} 说明:这在处理由多个连续分隔符构成的字符串时非常有用,比如解析CSV文件或命令行参数。

支持字符串分隔符的实现

若分隔符是多字符字符串(如"||""and"),则不能使用getline,需使用std::string::findsubstr手动查找。

示例:

std::vector split(const std::string& str, const std::string& delim) {
    std::vector result;
    size_t start = 0;
    size_t end = str.find(delim);
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;

} 注意:此版本不会自动忽略空字符串,如有需要可额外添加if (!segment.empty())判断。

使用示例

调用上面定义的函数:

int main() {
    std::string text = "apple,banana,,cherry";
    auto parts = split(text, ',');
for (const auto& part : parts) {
    std::cout << "[" << part << "]" << std::endl;
}
// 输出: [apple] [banana] [] [cherry]

// 使用过滤空字符串版本,则中间空项会被跳过
return 0;

}

基本上就这些。根据实际需求选择合适的split实现方式,可以封装成工具函数放在头文件中重复使用。关键是理解不同分隔场景下的处理逻辑,避免遗漏边界情况。


# c++  # python  # app  # 工具  # csv  # ai  # apple  # stream  # csv文件  # 标准库 


相关文章: 测试制作网站有哪些,测试性取向的权威测试或者网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何在Windows环境下新建FTP站点并设置权限?  大连网站制作公司哪家好一点,大连买房网站哪个好?  完全自定义免费建站平台:主题模板在线生成一站式服务  广东企业建站网站优化与SEO营销核心策略指南  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  建站之星如何快速更换网站模板?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何快速辨别茅台真假?关键步骤解析  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  建站之星后台管理:高效配置与模板优化提升用户体验  如何高效完成独享虚拟主机建站?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  免费网站制作appp,免费制作app哪个平台好?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  岳西云建站教程与模板下载_一站式快速建站系统操作指南  建设网站制作价格,怎样建立自己的公司网站?  建站之星后台密码遗忘或太弱?如何重置与强化?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  实例解析angularjs的filter过滤器  宁波免费建站如何选择可靠模板与平台?  如何正确下载安装西数主机建站助手?  高防服务器如何保障网站安全无虞?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  网站制作价目表怎么做,珍爱网婚介费用多少?  建站之星在线客服如何快速接入解答?  建站之星免费模板:自助建站系统与智能响应式一键生成  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  香港服务器如何优化才能显著提升网站加载速度?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  小程序网站制作需要准备什么资料,如何制作小程序?  建站之星如何实现五合一智能建站与营销推广?  实例解析Array和String方法  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  如何在橙子建站中快速调整背景颜色?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  建站之星各版本价格是多少?  香港服务器租用费用高吗?如何避免常见误区?  ,南京靠谱的征婚网站?  高防服务器:AI智能防御DDoS攻击与数据安全保障  图册素材网站设计制作软件,图册的导出方式有几种?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  公司网站设计制作厂家,怎么创建自己的一个网站?  建站之星微信建站一键生成小程序+多端营销系统  如何快速搭建高效可靠的建站解决方案? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。