我有一个字符串,每次出现 char ',' 时我都想拆分它。我想将结果保存在指向字符串的指针向量中。做这个的最好方式是什么?
问问题
2215 次
3 回答
0
或者自己写。这个算法很容易用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 回答