I read two QStrings (ValueOne,ValueTwo) out of a file with (just a basic example)
int main(int argc, char *argv[]) {
QString x = ("yes "
"start ValueOne end"
"no"
"start ValueTwo end");
//try to read ValueOne
QString s = "start";
QString e = "end";
int start = x.indexOf(s, 0, Qt::CaseInsensitive);
int end = x.indexOf(e, Qt::CaseInsensitive);
if(start != -1){
QString y = x.mid(start + s.length(), (end - (start + s.length())));
qDebug() << y << (start + s.length()) << (end - (start + s.length()));
//try to read ValueTwo
QString s2 = "start";
QString e2 = "end";
int start2 = x.indexOf(s2, 0, Qt::CaseInsensitive);
int end2 = x.indexOf(e2, Qt::CaseInsensitive);
if(start2 != -1){
QString y2 = x.mid(start2 + s.length2(), (end2 - (start2 + s.length2())));
qDebug() << y2 << (start2 + s.length2()) << (end2 - (start2 + s.length2()));
}
}
As you see the source code can’t difference between ValueOne and ValueTwo just by “start” and “end”, because both QString::mid() methods (which proceed line by line as far as I know) have the same start position and the same length (see http://qt-project.org/doc/qt-4.8/qstring.html#mid ). Therefore I thought if the whole string was one line like
QString x = "yes start ValueOne end no start ValueTwo end ";
I could difference between the two values with QString s = “yes start” and QString s2 = “no start”. So would convert the multiline String into a one line String be a solution and how can I do this? or Is there another maybe better solution?
greetings
As I already mention in your other question I would prefer QRegExp. It seems to be more readable.
If your first string is the
2nvalue always and your second string is2n+1you could use the modulo operator: