分割函数c ++

时间:2012-09-16 10:27:09

标签: c++ split

  

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

我需要一个分裂功能。

必须像这样工作:

buffer = split(str, ' ');

我搜索了一个拆分函数,尝试了升级库,并且所有工作都很糟糕:/

3 个答案:

答案 0 :(得分:1)

来自标准c库的

strtok()非常好,可以满足您的需求。除非你热衷于从多个线程中使用它并担心函数不是重入的,我不怀疑这种情况。

P.S。假设您有一个字符数组作为输入。如果是c ++字符串,仍然可以在使用strtok之前使用string.c_str来获取c字符串

答案 1 :(得分:1)

boost lib也应该有用。

像这样使用它:

vector <string> buffer;
boost::split(buffer, str_to_split, boost::is_any_of(" "));

<强>加
确保包含算法:

#include <boost/algorithm/string.hpp>

将它打印到std :: cout,如下所示:

vector<string>::size_type sz = buffer.size();
cout << "buffer contains:";
for (unsigned i=0; i<sz; i++)
cout << ' ' << buffer[i];
cout << '\n';

答案 2 :(得分:-1)

我猜strtok()就是你要找的东西。

它允许您始终返回由给定字符分隔的第一个子字符串:

char *string = "Hello World!";
char *part = strtok(string, " "); // passing a string starts a new iteration
while (part) {
    // do something with part
    part = strtok(NULL, " "); // passing NULL continues with the last string
}

请注意,此版本不能同时在多个线程中使用(还有一个版本(strtok_s()more details here),它具有一个附加参数,使其在并行环境中工作)。对于您希望在循环中拆分子字符串的情况也是如此。