0

可能重复:
在 C++ 中拆分字符串

我需要一个分裂的功能。

必须像这样工作:

buffer = split(str, ' ');

我搜索了一个拆分函数,尝试了 boost 库,但一切都不好:/

4

3 回答 3

1

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

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

于 2012-09-16T10:32:37.903 回答
1

升压库应该也可以工作。

像这样使用它:

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';
于 2012-09-16T10:32:48.493 回答
-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()此处有更多详细信息),它有一个附加参数,可以使其在并行化环境中工作)。对于您想在循环中拆分子字符串的情况也是如此。

于 2012-09-16T10:33:02.550 回答