Ich habe eine CSV-Datei und ein Teil des Textes in es wie folgt:Populate Struktur mit specifc Daten aus QStringList
sendLink, 23, VL_name1, 0.5, 0.5
PATH, (device_1, 1, SW1, 10),\
(SW_2, 23, SW_1, 23),\
(SW_1, 9, device_2, 1)
PATH, (device_3, 2, SW_12, 10),\
(SW_12, 23, SW_11, 23),\
(SW_11, 9, device_2, 2)
sendLink, 24, VL_name2, 0.5, 0.5
PATH, (device_4, 1, SW_09, 24),\
(SW_01, 9, device_2, 1)
PATH, (device_5, 2, SW_19, 24),\
(SW_11, 9, device_2, 2)
sendLink, 25, VL_name3, 0.5, 0.5
PATH, (device_7, 1, SW_09, 24),\
(SW_09, 17, SW_01, 24),\
(SW_01, 9, device_2, 1)
PATH, (device_8, 2, SW_19, 24),\
(SW_19, 17, SW_11, 24),\
(SW_11, 9, device_2, 2)
ich Qt bin mit und haben alle Daten aus der CSV in eine QStringList geholt, wo Jedes Element von QStringList ist eine Zeile von der CSV.
Ich habe eine Struktur wie unten definiert:
typedef struct{
QString outputESResource;
QString inputESResource;
} Path_t;
und jetzt meine Absicht ist, obwohl die QString Liste zu scannen und für jede Zeile, die mit Sendlink beginnt, soll ich die unmittelbaren nächsten Zeilen lesen, die mit PATH
starten Speichern Sie das zweite Element (device_1, device_3) in outputESResource
und suchen Sie dann in den Zeilen nach der PATH-Zeile und holen Sie die vorletzte Spalte (device_2) in diesem Beispiel und speichern Sie sie in inputESResource
.
Hierzu ich durch den String für Linien bin auf der Suche mit PATH beginnen wie folgt:
for(int i=0; i < fileContents.count(); i++)
{
if(fileContents[i].startsWith("PATH", Qt::CaseSensitive))
{
//scan next element in stringlist
}
}
Ich bin nicht sicher, ob dies der richtige Weg ist, um dies zu implementieren. Könnte jemand bitte Ratschläge dazu geben.
Mögliche Duplikate von [Parsen durch eine CSV-Datei in Qt] (http: // Stackoverflow .com/questions/27318631/Parsing-durch-a-csv-Datei-in-qt) –