14.03.2017, 12:44, "Harald Vistnes" <harald.vist...@gmail.com>: > Hi, > > I'm currently working on reading and parsing large ASCII based text files and > I am wondering what is the current best practice. There are so many classes > and macros available, so it can be a bit confusing to know what to use when. > > QString, QLatin1String, QByteArray, QStringLiteral, QLatin1Literal, > QByteArrayLiteral, plain C++ string literal, QStringRef, QStringBuilder and > so on. And then std::string and raw const char* strings. > > In my case I want to read a large ASCII file line by line, so I don't need > unicode. I need to compare a string with a literal, extract substrings and > convert some strings to numbers. > > Should I just use QString all the way, or is it faster to use some other > classes when you know you don't need unicode?
You should use QByteArray here, which is what QIODevice::readLine() returns. Avoid using QString as long as possible because that will trigger conversion of your text to UTF16 encoding, which may be totally useless in your use case. > > Any hints on fast file parsing code in Qt itself that I could use as a > guildeline? If you don't limit yourself with Qt, take a look at re2c. It's a very convenient generator of lexers which can generate much more efficient code than what you will get by reading file line by line and splitting lines in ad hoc way. > > Thanks, > Harald > , > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest -- Regards, Konstantin _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest