dev/qt/ QStringSnippets


Max split

Python's split method takes a maxsplit argument which limits the number of splits, so that, for example, "the quick brown fox".split(" ",2) would result in ["the","quick","brown fox"]. Qt does not have such a feature, though it is easily implemented. This snippet based on answer from https://stackoverflow.com/questions/18343253/qt-qstring-maxsplit-argument

QStringList split_with_max(QString& str, QString& sep, int maxSplit=-1)
{
  if( maxSplit < 0 ) return str.split(sep);
  if( maxSplit == 0 ) return QStringList(str);
  QStringList list = str.split(sep).mid(0, maxSplit);
  QString remainingStr = str.section(sep, maxSplit);
  list << remainingStr;
  return list;
}

Printing to console

QTextStream& qStdOut()
{
    static QTextStream ts( stdout );
    return ts;
}

QTextStream& qStdErr()
{
    static QTextStream ts( stderr );
    return ts;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QDir dir;

    qStdOut() << dir.currentPath() << "\n";
    qStdOut().flush();
}

as an example of this and QRegularExpression, see PoorMansGrepV1.