【发布时间】:2020-08-07 20:27:04
【问题描述】:
要删除前后空格,Qt 提供了QByteArray::trimmed()。但它每次都不必要地复制底层字符串。
是否有任何通用且有效的方法(最好使用模板)来修剪QByteArray, QString, std:: string 的空白?
【问题讨论】:
-
你用 c++14 标记了你的问题,所以我猜
std::string_view(C++17) 是不可能的? -
@Botje,是的,我们的主要兼容性是与 C++14 兼容,而 C++17 尚未得到支持。如果它也支持 Qt 的字符串类型,你能否用 C++17 回答你的观点。
-
如果您不介意将未修剪的版本保留为底层 QString,QStringView::trimmed 可能是一个选项(对于 QString)。
-
@FrankOsterfeld,这就是问题的主题。如前所述,
trimmed()效率低下,而且 Qt 总是创建一个新字符串是愚蠢的。他们应该给出一个非常量的方法,例如trim(),它适用于现有的字符串。 -
我说的是 QStringView::trimmed,而不是 QString::trimmed
标签: c++ string qt c++14 removing-whitespace