0

我有一个字符串,每次出现 char ',' 时我都想拆分它。我想将结果保存在指向字符串的指针向量中。做这个的最好方式是什么?

4

3 回答 3

0

boost::algorithm::split

或者自己写。这个算法很容易用std::find.

于 2013-11-09T22:13:43.767 回答
0

“我想每次 char 都拆分它','......”

使用std::getline并将分隔符(最后一个参数)指定为','.

“我想将结果保存在指向字符串的指针向量中”

你想避免使用指针向量,相信我。改用std::vector<std::string>

std::istringstream is(",,,my,,weird,string");

std::vector<std::string> tokens;
std::string token;
while (std::getline(is, token, ',')) {
    if (!token.empty())
        tokens.push_back(token);
}

for (int i = 0; i < tokens.size(); ++i)
    std::cout << tokens[i] << " ";

输出my weird string。只是不要忘记#include <sstream>

于 2013-11-09T22:13:46.690 回答
0

我曾经strtok对字符串进行标记,但这有一些缺点:

  • 这是一部分,cstring它用于 C 风格的字符串,而不是std::string对象。
  • 在第一次之后必须多次调用它来更改参数,这有点笨拙。

如果您有可用的 boost,这并不理想,但它应该适用于 C++ 的所有实现。

于 2013-11-09T22:20:35.383 回答