Probleme bei Unicode - Ausgabe mit QTextStream

Alles rund um die Programmierung mit Qt
Antworten
DaYWalKer
Beiträge: 5
Registriert: 13. August 2006 17:21

Probleme bei Unicode - Ausgabe mit QTextStream

Beitrag von DaYWalKer »

Hallo zusammen,
ich habe folgendes Problem. Meien Software liest über QDomDocument ein XML - Dokument ein. Parallel speichere ich dieses noch in einem QString über einen Textstream, damit meine Formatierungen innerhalb der XML - Datei bestehen bleiben. Meine Software fügt nun für jedes Tag ein Attribut mit einem Wert ein. Das klappt auch alles. Probleme entstehen, wenn ich das Ganze per TextStream zurückschreibe.

Code: Alles auswählen

QFile dest(this->filename);
	dest.open(QIODevice::WriteOnly | QFile::Text);
	QTextStream dateiausgabe(&dest);
	dateiausgabe.setAutoDetectUnicode(false);
	dateiausgabe.setCodec(codecutf8);
	QString inhalt_vektor;
	for (int i = 0; i < this->content_vektor.size(); i++) inhalt_vektor += content_vektor[i];
	dateiausgabe << inhalt_vektor;
	dateiausgabe.flush();
	dest.close();
Der Content - Vektor enthält jede Zeile des ursprünglichen Dokuments, welches UTF-8 kodiert ist. Zeilenumbrüche werden demnach durch /r/n gespeichert (arbeite auf Windows). Wenn ich das Ganze jetzt zurückschreibe, scheint der Textstream jedes /n durch ein /r/n zu ersetzen => heißt: ich habe zwischen jeder Zeile einen Linefeed mehr, als gewünscht. Gibt es eine Methode dieses automatische Setzen zu verhindern? Oder hat jemand eine andere Lösung parat?

Danke schon mal,
Patrick
DaYWalKer
Beiträge: 5
Registriert: 13. August 2006 17:21

Beitrag von DaYWalKer »

meine Vermutung war nich ganz richtig. Bei der Ausgabe scheint jedem \n ein \r vorangestellt zu werden.

Mache ich das Dokument mehrmals auf und speichere zurück, hab ich bei den Zeilenumbrüchen immer ein \r mehr

1. \r\n
2. \r\r\n
usw.

es muss doch irgendeine Option geben, mit der man das abschalten kann, oder?
Einmaliger
Beiträge: 48
Registriert: 22. Juli 2006 11:42

Beitrag von Einmaliger »

Wird beim Öffnen der Eingabedatei ebenfalls QIODevice::Text übergeben? Die \r\n sollten nämlich nicht in content_vector enthalten sein, sondern schon beim Einlesen durch \n ersetzt werden.

Also entweder Eingabedatei auch im Textmodus öffnen oder Ausgabedatei NICHT im Textmodus öffnen. Sauberer ist vermutlich das erstgenannte.

Noch ein Tipp, wenn du einen Vektor aus Strings zu einem zusammenfügen willst:
QString QStringList::join ( const QString & sep ) const
Joins the all the string list's strings into a single string with each element separated by the string sep (which can be an empty string).
DaYWalKer
Beiträge: 5
Registriert: 13. August 2006 17:21

Beitrag von DaYWalKer »

hatte natürlich nicht im Text - Modus geöffnet. Daher die Probleme mit dem CR.

Danke für deine Hilfe!
Patrick
Antworten