【问题标题】:What is the most efficient C++ method to split a string based on a particular delimiter similar to split method in python? [closed]什么是基于特定分隔符拆分字符串的最有效 C++ 方法,类似于 python 中的拆分方法? [关闭]
【发布时间】:2014-06-20 12:46:41
【问题描述】:
getline(cin,s);
istringstream iss(s);
do
{
    string sub;
    iss>>sub;
    q.insert(sub);
 }while(iss);

当问题要我根据空间进行拆分时,我使用了这种技术,所以任何人都可以解释我如何在有特定分隔符(例如“;”)时进行拆分或“:”。

有人告诉我有关 strtok 函数的信息,但我无法了解它的用法,所以如果有人可以提供帮助,那就太好了。

【问题讨论】:

  • 最有效的方法是在 StackOverflow 上搜索这些信息。这个问题之前已经回答过了。
  • 对不起,我是社区的新手。将来会处理这些事情:)
  • 谁能解释为什么这不清楚?
  • 我实现了一个delimited input stream iterator。要使用,请用您的字符串填写std::istringstream,然后执行:std::vector<std::string> split{delim_istream_iterator<>{ss, ':'}, delim_istream_iterator<>{}};。将 : 替换为您的分隔符。

标签: c++ string split


【解决方案1】:

首先,不要使用strtok。永远。

在标准库中并没有真正的函数。 我使用类似的东西:

std::vector<std::string>
split( std::string const& original, char separator )
{
    std::vector<std::string> results;
    std::string::const_iterator start = original.begin();
    std::string::const_iterator end = original.end();
    std::string::const_iterator next = std::find( start, end, separator );
    while ( next != end ) {
        results.push_back( std::string( start, next ) );
        start = next + 1;
        next = std::find( start, end, separator );
    }
    results.push_back( std::string( start, next ) );
    return results;
}

我相信 Boost 有很多这样的功能。 (我实现了 早在 Boost 出现之前我的大部分时间。)

【讨论】:

  • 非常感谢帮助我正在寻找这样的东西谢谢:)
  • @vs13 如果它对您有所帮助,您可能仍然不想接受这个答案。单击左侧的大白色复选标记...
猜你喜欢
  • 1970-01-01
  • 2021-12-17
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 2020-07-11
相关资源
最近更新 更多