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

what is the best way to split string ? (c++)

本文关键字:C++ 是什么 方法 字符串 最佳 拆分      更新时间:2023-10-16

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

"我想在每次字符','时拆分它......"

使用 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>.

boost::algorithm::split

或者写你自己的。该算法在std::find方面非常容易编写。

我用strtok来标记字符串,但这有几个缺点:

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

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