首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中是否存在与PHP()函数相同的内容?

问在C++中是否存在与PHP()函数相同的内容?
EN

Stack Overflow用户
提问于 2012-10-19 03:28:52
回答 2查看 40.5K关注 0票数 25

可能重复: Splitting a string in C++

在PHP中,explode()函数将接受一个字符串,并将其分割成一个数组,将每个元素通过指定的分隔符分隔开来。

在C++中有等效的函数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-19 03:36:30

下面是一个简单的实现示例:

代码语言:javascript
复制
#include <string>
#include <vector>
#include <sstream>
#include <utility>

std::vector<std::string> explode(std::string const & s, char delim)
{
    std::vector<std::string> result;
    std::istringstream iss(s);

    for (std::string token; std::getline(iss, token, delim); )
    {
        result.push_back(std::move(token));
    }

    return result;
}

用法:

代码语言:javascript
复制
auto v = explode("hello world foo bar", ' ');

注意:@曾傑瑞编写输出迭代器的想法对于C++来说更为惯用。实际上,您可以同时提供输出迭代器模板和生成向量的包装器,以获得最大的灵活性。

注2:如果要跳过空令牌,请添加if (!token.empty())。

票数 37
EN

Stack Overflow用户

发布于 2012-10-19 03:36:47

标准库不包括直接的等价库,但编写起来相当容易。作为C++,您通常不希望专门写入数组--相反,您通常希望将输出写入迭代器,这样就可以将输出写入数组、向量、流等。这将提供一些关于一般顺序的内容:

代码语言:javascript
复制
template <class OutIt>
void explode(std::string const &input, char sep, OutIt output) { 
    std::istringstream buffer(input);

    std::string temp;

    while (std::getline(buffer, temp, sep))
        *output++ = temp;
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12966957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档