免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: cc007cc
打印 上一主题 下一主题

C++ 中怎么实现高效的string的split函数? [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-10-30 22:05 |只看该作者

回复 #1 cc007cc 的帖子

很简单,因为流的默认间隔是空格。所以使用istringstream.

#include <iostream>
#include <string>
#include<sstream>
#include<vector>

using namespace std;

int main() {       
        string test = "aa aa bbc cccd",temp;
        istringstream ss( test);        
        vector<string> myvec;
        while(!ss.eof()){
                ss>>temp;
                myvec.push_back(temp);
        }
        vector<string>::iterator i;
        for(i=myvec.begin();i!=myvec.end();++i)
                cout<<(*i)<<endl;
        system("pause");
        return 0;
} ///:~

论坛徽章:
0
22 [报告]
发表于 2009-10-10 12:14 |只看该作者
主要是c的移植性和依赖性要好过c++, 所以这些基础函数我一般都是c

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
23 [报告]
发表于 2009-10-10 15:39 |只看该作者
原帖由 cc007cc 于 2008-9-22 11:23 发表
问题是这样的
一个string text="aa aa bbc cccd"根据分隔符(默认是空格)讲其中的一个个字串提出来放到vector中
暂时是这么做的(见下面代码),当要处理的string很多,较长时要保证程序的效率,大家有什麽 ...

strtok效率好像还可以,网上可以搜一下stptok,可能比strtok更好用一些。

论坛徽章:
0
24 [报告]
发表于 2009-10-10 15:55 |只看该作者
我经常用的c++ split函数。不知道效率如何, 没关心过, 因为用的比较少。

void StrSplit(const std::string& src, const std::string& sep, std::vector<std::string>& dst)
{
    std::string s;
    for (std::string::const_iterator it = src.begin(); it != src.end(); it++)
    {
        if (sep.find(*it) != std::string::npos)
        {
            if (s.length()) dst.push_back(s);
            s.clear();
        }
        else
        {
            s += *it;
        }
    }

    if (s.length())
    {
        dst.push_back(s);
    }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP