如何在具有strtk的列表中具有“自定义split()”?
|
我已经阅读了http://www.codeproject.com/KB/recipes/Tokenizer.aspx,我想在我的主目录中使用最后一个示例(最后,在所有图形之前)\“扩展定界符谓词”,但是当我将token_list分配给向量时,却没有获得与本文作者相同的输出令牌,为什么?
如何将真实结果放入列表或向量中?我想要这个:
list0 abc
list1 123,mno xyz
list2 i \\,jk
但是我有类似的东西:
list0 abc; \“ 123,mno xyz \”,i \\,jk
list1 123,mno xyz \“,i \\,jk
list2 i \\,jk
来源样本:
class extended_predicate
{
public:
extended_predicate(const std::string& delimiters)
: escape_(false),
in_bracket_range_(false),
mdp_(delimiters)
{}
inline bool operator()(const unsigned char c) const
{
if (escape_)
{
escape_ = false;
return false;
}
else if (\'\\\\\' == c)
{
escape_ = true;
return false;
}
else if (\'\"\' == c)
{
in_bracket_range_ = !in_bracket_range_;
return true;
}
else if (in_bracket_range_)
return false;
else
return mdp_(c);
}
inline void reset()
{
escape_ = false;
in_bracket_range_ = false;
}
private:
mutable bool escape_;
mutable bool in_bracket_range_;
mutable strtk::multiple_char_delimiter_predicate mdp_;
};
int main()
{
std::string str = \"abc;\\\"123, mno xyz\\\",i\\\\,jk\";
strtk::std_string::token_list_type token_list;
strtk::split(extended_predicate(\".,; \"),
str,
std::back_inserter(token_list),
strtk::split_options::compress_delimiters);
return 0;
}
没有找到相关结果
已邀请:
1 个回复
久坡
更新: 我测试过的代码在这里:https://gist.github.com/1037493