拆分字符串的最佳方法是啥? (c++) [重复]
Posted
技术标签:
【中文标题】拆分字符串的最佳方法是啥? (c++) [重复]【英文标题】:what is the best way to split string ? (c++) [duplicate]拆分字符串的最佳方法是什么? (c++) [重复] 【发布时间】:2013-11-09 22:11:46 【问题描述】:我有一个字符串,我想在每次出现 char ',' 时拆分它。 我想将结果保存在指向字符串的指针向量中。 最好的方法是什么?
【问题讨论】:
【参考方案1】:“我想在每次 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>
。
【讨论】:
【参考方案2】:boost::algorithm::split
或者自己写。这个算法很容易写成std::find
。
【讨论】:
【参考方案3】:我使用strtok
来标记字符串,但这有一些缺点:
cstring
的一部分,用于C 风格的字符串,而不是std::string
对象。
在第一次之后必须多次调用它来更改参数,这有点笨拙。
如果你有可用的 boost 就不太理想,但它应该适用于所有 C++ 实现。
【讨论】:
以上是关于拆分字符串的最佳方法是啥? (c++) [重复]的主要内容,如果未能解决你的问题,请参考以下文章