Mit Qt bestimmte Stelle aus Textdatei als String speichern?
-
Hallo,
ich möchte gerne mit den Qt Bibliotheken eine bestimmte Stelle aus einem Text lesen und den Inhalt dieser Stelle abspeichern.
Nun habe ich folgenden Quelltext mit dem der ganze Text Zeile für Zeile gelesen und gespeichert wird (wenn ich das richtig verstanden habe):
QTextStream Stream (&GEO); //Adress-/Dateiübergabe an QTextStream Objekt QString text; do { text = Stream.readLine(); } while(!text.isNull());
Nun möchte ich aber ja nicht den ganzen Text abspeichern, sondern immer nur bestimmte Stellen daraus. Zu den Stellen weiss ich nur, was vor steht und was nach diesen steht.
Kann mir jemand sagen mit welchen Methoden/Anweisungen ich das machen kann bzw. noch besser mir vielleicht ein kleines Beispiel dazu geben?
Gruß
Chaka
-
Hast du schon die Doku gefunden? Da steht ALLES drin, was du brauchst. Mit Beispielen. Könntest z.B. mit QString::indexOf nach den Texten suchen, die davor/danach stehen, und die Zeilen speichern. Du hast deine Aufgabenstellung nicht sehr genau beschrieben, aber im Prinzip ist das alles überhaupt kein Problem.
-
Hi,
weiss leider nicht wie ich das mit QString::indexOf bewerkstelligen soll.
Wie gesagt, kenne ich nur den Text direkt vor und direkt nach dem zu speichernden String. Die Position dieser Texte davor und danach hat aber keine feste Stellenziffer (siehe QString::indexOf ), kann und wird von Textdatei zu Textdatei varieren.
Ist es schematisch vielleicht nicht eher in etwa so möglich:
QTextStream Stream (&GEO); //Adress-/Dateiübergabe an QTextStream Objekt QString text; do { text = Stream.readLine(); Wenn der Text "Anfang" im Qstring text bzw. im QTextStream Stream erscheint speicher unter QString Stelle1 nachfolgenden Text bis der Text "Ende" erscheint } while(!text.isNull());
Also schematisch sieht das ganze ja nicht wirklich anspruchsvoll aus, nur leider weiss ich nicht mit welchen Methoden ich das einfach bewerkstelligen kann?
Vielleicht kann mir ja jemand weiter helfen oder hat das gleiche / ähnliches schon programmiert.
Gruß
Chaka
-
Chaka schrieb:
Hi,
Wenn der Text "Anfang" im Qstring text bzw. im QTextStream Stream erscheint
speicher unter QString Stelle1 nachfolgenden Text
bis der Text "Ende" erscheintDu kannst hier auch einen regulären Ausdruck dafür verwenden, der den Text zwischen diesen beiden Wörtern liefern kann:
https://qt-project.org/doc/qt-4.8/qregexp.html
-
Entweder QRegExp, oder halt mit indexOf. Es gibt auch startsWith und endsWith, dann kannst z.B. sowas machen:
if (text.startsWith("Anfang") && text.endsWith("Ende"))
{
...
}