Domanda

Ho problemi a dividere correttamente un Qstring. A meno che non mi sbagli, per più delimitatori ho bisogno di un regex e non riesco a capire un'espressione perché sono abbastanza nuovo per loro.

La stringa è input di testo da un file:

F 523/845/1 524/846/2 562/847/3 564/848/4

Ho bisogno di ogni numero separatamente da mettere in un array.

Alcuni codici ....

QStringList x;
QString line = in.readLine();
        while (!line.isNull()) {
            QRegExp sep("\\s*/*");

            x =  line.split(sep);

Qualche puntatore?

Saluti

È stato utile?

Soluzione

Cambia la tua espressione regolare in questo modo:

QRegExp sep("(\\s+|/)");

poi x avrà ogni numero.

Altri suggerimenti

Ho trovato abbastanza utile provare in modo interattivo Regex. Oggi ci sono anche molti strumenti online, ad esempio: http://gskinner.com/regexr/

Puoi mettere lì il tuo testo di ricerca e giocare con il regex per vedere cosa è abbinato quando.

È possibile utilizzare la funzione STRTOK, che ha diviso un QString con uno o più token diversi.

Sarebbe così:

    QString a = "f 523/845/1 524/846/2 562/847/3 564/848/4";
    QByteArray ba = a.toLocal8Bit();
    char *myString = ba.data();
    char *p = strtok(myString, " /");

    while (p) {
        qDebug() << "p : " << p;
        p = strtok(NULL, " /");
    }

Puoi impostare tutti i token di cui hai bisogno. Per ulteriori informazioni, visitare la pagina CPLUSPLUS di questa particolare funzione. http://www.cplusplus.com/reference/cstring/strtok/

Saluti!.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top