TerraG hat geschrieben:@brax: Ist \ dann soetwas wie eine Zeichenauswahl, d.h. ich wähle das Zeichen hinter dem \ in den String (folglich geeignet für Sonderzeichen)? --> Hat auf jeden Fall funktioniert!
Escapesequenzen sind Zeichenfolgen, die innerhalb eines Strings eine besondere Bedeutung haben. Z.B. weist die Escapesequenz \n an, einen Zeilenumbruch zu machen. Zeichen, die in C++ eine besondere Bedeutung haben (z.B. "), haben ihre eigene Escapesequenz, um zwischen der besonderen Bedeutung und dem Zeichenwert zu unterscheiden. Google (bzw. Wikipedia) geben Dir unter dem Stichwort Escapesequenz noch einige andere an...
Habe aber mit der Dokumentation einige Probleme:
1. Warum soll ich zwei Klassen "QFile" und "QTextStream" verwenden, wenn es auch mit nur "fstream" geht?
2. Frage zu Grundlagen: Was bedeutet genau der Befehl: if (!file.open) = wenn ("Nicht"file.öffnen) ?
ch weiss, dass sind C++ Grundlagen - versteh ich aber net ganz - würd es aber gern wissen
).
3. Wo steht bitte in QFile, dass die Methode open eine Datei erzeugt?
4. Was soll das mit Methode close() aus QFile schließt die Datei nicht, löscht aber deren Inhalt? Auch wenn ich das hier garnicht anwenden müsste.
5. Bei "fstream" brauch ich garkeinen Zeiger zu benutzen (siehe &file in obriger Methode), sondern schreib einfach direkt in das fstream Objekt. Ist doch weniger umständlich oder?
An fstream ist erstmal nichts auszusetzen, war nur Interesse.
1. Es geht auch ohne QTextStream (QFile::write). QTextStream macht es nur komfortabler.
2. QFile::open gibt den als bool zurück, ob das Öffnen funktioniert hat. Die Zeile bedeutet also, "wenn Du die Datei nicht öffnen kannst, mach bitte nicht weiter" (die Datei kann z.B. nicht geöffnet werden, wenn Du versuchst eine schreibgeschützte Datei mit QIODevice::WriteOnly zu öffnen).
3. Aus der Doku zu QFile::open : "Note: In WriteOnly or ReadWrite mode, if the relevant file does not already exist, this function will try to create a new file before opening it."
4. Keine Ahnung was Du meinst. Doku: "Calls QFile::flush() and closes the file. Errors from flush are ignored." 1. Die Datei wird geschlossen. 2. nichts wird gelöscht, nur Fehler, die evtl. bei flush() auftreten werden ignoriert.
5. QTextStream bietet einige nette Funktionen, die man mit fstream selber machen muss, wenn man sie möchte (formatierte Ausgabe mit fester Feldbreite z.B.) außerdem kannst Du mit QTextStream in alle QIODevices schreiben (z.B. QProcess, QAbstractSocket, QNetworkReply).
@franzf:
Weiss nicht genau worauf Du hinaus willst, aber
1. In dem Thread ging es doch darum das doppelte Hochkomma zu entfernen, was nicht mein Ziel war.
franzf hat geschrieben:
Der Kern des Problems ist nämlich, dass eine " in zwei "" escaped werden muss, denn QString(""") gibt dir nen Fehler...
Franzf wollte darauf hinaus, dass auch in dem Thread (auch wenn Dein Anliegen ein anderes war) der Kern des Problems beim escapen lag.
Code: Alles auswählen
"// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //"
gibt mir immer die Warnung:
Code: Alles auswählen
Form.cpp:189:9: Warnung: unbekannte Fluchtsequenz: '\040' [standardmäßig aktiviert]
Form.cpp:189:9: Warnung: unbekannte Fluchtsequenz: '\*' [standardmäßig aktiviert]
Könnt Ihr mir sagen wie ich die Warnung abstelle?
1. Dein Compiler gibt blöderweise deutsche Fehlermeldungen. "Blöderweise", weil Du so z.B. nicht das Schlüsselwort "escapesequence" angezeigt bekommst, sondern die seltsame deutsche Übersetzung "Fluchtsequenz". Das macht eine Fehlersuche per Google relativ schwer.
2. Irgendwie passt der gepostete Code und die Fehlermeldung nicht zusammen. Laut der Fehlermeldung hast Du da eher sowas wie
zu stehen. Auch hier ist das Problem das mit den Escapesequenzen.
Ganz nebenbei: Mir wäre das warten auf eine Antwort bei so grundlegenden Fragen ehrlich gesagt zu blöd. Eine Google Suche nach "c++ anführungszeichen in string" gibt Dir sofort die Lösung....