Qt 等效于 boost tokenizer 表达式/构造

Posted

技术标签:

【中文标题】Qt 等效于 boost tokenizer 表达式/构造【英文标题】:Qt equivalent for a boost tokenizer expression/construction 【发布时间】:2017-01-12 13:43:39 【问题描述】:

我在 Ubuntu 14.04 上使用 Qt 4.8。 我目前正在尝试移植一个 Windows 应用程序...作者在应用程序代码中大量使用了 boost。 我已经用 Qt 等效结构替换了许多 boost 调用(我对 boost 的经验为零)。 现在我偶然发现了这个:

string command;
...
boost::char_separator<char> sep(",\t\r ");
boost::tokenizer<boost::char_separator<char>> tokens(command, sep);   

有对应的 Qt 吗? 我试过了:

QStringList tokens = QString(command.data()).split(QRegExp("\\s+"));    

但似乎不太好...... 1) 首先:它的行为与原始应用不同。 2)第二:我总是得到一个空令牌。很奇怪,我不知道为什么...!?!

请您给我一些帮助或分享一些想法以解决这些问题吗? 提前感谢您的时间和耐心。

【问题讨论】:

只是一个警告:并非 boost 中的所有东西都有 qt 替代品。为什么需要用qt代替boost?这似乎是一个巨大的努力。 Boost 是跨平台的,我会照原样使用它。 现在只剩下几个boost call要转换了……确实是很大的努力,但我别无选择,这就是要求。对于上面的这个:我很确定可以做到。 split(QRegExp("[,\t\r ]"))split(QRegExp("[,\t\r ]"), QString::SkipEmptyParts) 怎么样? @BenjaminT:它有效,QString::SkipEmptyParts 的那个。谢谢,太好了! @BenjaminT:当然值得花一点力气将其发布为答案。竖起大拇指! 【参考方案1】:

如问题的 cmets 所述,解决方案是使用:

split(QRegExp("[,\t\r ]"), QString::SkipEmptyParts)

【讨论】:

以上是关于Qt 等效于 boost tokenizer 表达式/构造的主要内容,如果未能解决你的问题,请参考以下文章

等效于 pybind11 中的 boost::python py::scope().attr()

等效于 C++ 中的 Regex.Replace

Qt C++ 在 GUI 线程(Boost 线程)之外显示图像

Qt 等效于 Perl 打包/解包

使用 boost::sregex_token_iterator 时出错

Qt C++ 等效于具有自定义格式的 C# toString