Я читаю две строки QStrings (ValueOne, ValueTwo) из файла с (просто базовый пример)
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()));
}
}
Как вы видите, исходный код не может отличить ValueOne от ValueTwo просто при запуске"и" конец ", потому что оба метода QString :: mid () (которые, насколько я знаю, выполняются построчно) имеют одинаковую начальную позицию и одинаковую длину (см. http://qt -project.org / doc/qt-4.8/qstring.html#mid).Поэтому я подумал, что если бы вся строка была одной строкой, как
QString x = "yes start ValueOne end no start ValueTwo end ";
, я мог бы отличить два значения с помощью QString s = "yes start" и QString s2 = "no start".Так будет ли преобразование многострочного String в однострочное String, и как я могу это сделать?или есть другое, может быть, лучшее решение?привет