偏好QVector<QString>时,如何无需专用函数实现类似join的拼接?
QVector 实现字符串拼接的几种简便方法
转QStringList调用join
这是最省事的办法,利用QStringList的迭代器构造函数直接把QVector转过去,然后用熟悉的join():QString joinedStr = QStringList(myVector.begin(), myVector.end()).join(",");不需要额外写循环,一行搞定,完全复用QStringList的现成逻辑。
用std::accumulate做累加拼接
借助标准库的累加算法,配合lambda表达式处理分隔符逻辑:#include <numeric> QString joinedStr = std::accumulate(myVector.cbegin(), myVector.cend(), QString(), [](const QString& current, const QString& next) { return current.isEmpty() ? next : current + "," + next; });这个方法不用转容器,直接在QVector上操作,lambda里判断是否是第一个元素,避免开头多一个分隔符。
用QTextStream流式拼接
通过QTextStream的流式输出特性来处理拼接,写法直观:QString joinedStr; QTextStream stream(&joinedStr); for (const auto& str : myVector) { if (!stream.atEnd()) stream << ","; stream << str; }利用
stream.atEnd()判断是否已经输出过内容,自动处理分隔符的添加时机。
以上几种方法都不需要编写专用函数,直接在需要拼接的地方 inline 使用即可。
内容的提问来源于stack exchange,提问作者ataraxis
相关产品推荐
相关产品推荐

