Bonjour,
Il faut procéder par étapes. Dans un premier temps, récupérer la ligne qui t'intéresse. Pour cela, tu peut utiliser la fonction "split", qui te permet de séparer un QString en QStringList (une liste de QString), suivant un séparateur. Puisque l'on veux séparer par ligne, le séparateur est le symbole de retour à la lgine "\n".
QStringList lineList = trame_.split("\n") ;
Ensuite, dans cette liste, on veut trouver celle qui commence par "$IIMWV". Là encore, on a de la chance, la classe QString est riche en fonctionalitées de ce type. On a la méthode startsWith, qui permet de tester si un QString commence par un préfix donné. Il suffit donc de parcourir notre liste et de tester chaque ligne, par exemple comme ceci :
1 2 3 4 5 6 7
| QString relevantLine;
for(const QString & line : lineList) {
if(line.startsWith("$IIMWV")) {
relevantLine = line;
break;
}
} |
Après ce code, relevantLine devrait contenir la chaine "$IIMWV,179.0,R,000.30,N,A<CR><LF>", dans ton premier exemple, et "$IIMWV,179.0,R,000.30,N,A<CR><LF>" dans le second.
Et on continue comme ça. On peut à nouveau utiliser split, mais cette fois avec la virgule en séparateur, pour isoler les différentes parties. Ou bien section, comme tu le proposais. Attention, cependant, le premier argument que l'on donne à section est un séparateur, ça ne semble pas clair dans l'utilisation que tu essayais d'en faire.
QString windOrientation = relevantLine.section(",", 1, 1) ;
Partager