C++ 拆分字符串的最佳方法是什么?(c+;+;)

C++ 拆分字符串的最佳方法是什么?(c+;+;),c++,string,split,C++,String,Split,我有一个字符串,我想在每次出现字符“”时将其拆分。 我想将结果保存在指向字符串的指针向量中。 最好的方法是什么? 或者写你自己的。根据std::find“我想在每次字符','..”时将其拆分,编写此算法非常简单 使用并指定分隔符(最后一个参数)为,' “我想将结果保存在指向字符串的指针向量中” 你想避免使用指针向量,相信我。改用std::vector: std::istringstream is(",,,my,,weird,string"); std::vector<std::strin

我有一个字符串,我想在每次出现字符“”时将其拆分。 我想将结果保存在指向字符串的指针向量中。 最好的方法是什么?

或者写你自己的。根据
std::find

“我想在每次字符
','
..”时将其拆分,编写此算法非常简单

使用并指定分隔符(最后一个参数)为
,'

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

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

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] << " ";
std::istringstream是(“,,我的,,,奇怪的,字符串”);
std::向量标记;
字符串标记;
while(std::getline(is,token,,')){
如果(!token.empty())
代币。推回(代币);
}
对于(int i=0;istd::cout我使用了
strtok
来标记字符串,但这有一些缺点:

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

如果你有Boost可用,它就不理想,但是它应该适用于C++的所有实现。