PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QString in char* umwandeln



HeReSY
18-02-2003, 14:07
Hi,

ich habe eine Funktion, die einen char str[128] aufnimmt.
Ich habe aber nur einen QString zur verfügung. Wenn ich die beiden einfach gleich setze, meckert der Compiler, das er das nicht umwandeln kann.
wenn ich aber meinen QString mittels latin1() in ein const char* umwandel, dann steht im const char* irgendein Müll drinn. Bei Ausgabe im QMessageBoox Fenster probiert.
Gibt es noch irgendeine andere Möglichkeit einen QString in einen char* umzuwandeln?

HeReSY

tuxipuxi
18-02-2003, 14:53
das kann nicht sein.
waere es vielleicht moeglich das du als rueckgabewert eine hexadezimal adresse bekommen hast?

HeReSY
18-02-2003, 15:07
Nö,



const char *cFileName = fi->fileName().latin1();

So hab ich das gemacht. Wenn ich fi->fileName().latin1() in einer MessageBox ausgebe, dann stimmt der String auch noch. Wenn ich aber cFileName ausgebe, dann stehen da Zeichen wie hochgestellte Zwei, Unendlich Zeicehn etc..

HeReSY

tuxipuxi
18-02-2003, 16:20
ich glaube es muss:


const char *cFileName = &(fi->fileName().latin1());


heissen.
.latin1() liefert ja einen zeiger auf const char zurueck. dann muss dein zeiger auch die adresse aufnehmen oder taeusche ich mich?

anda_skoa
18-02-2003, 16:58
Kommt darauf an, wie du es dann weiter benutzt, aber sieht bis auf latin1 ganz richtig aus.
Machst du dann ein strcpy auf dein Char Array?

latin1() sollte man nur nehmen, wenn man sicher ist, dass der QString nur Latin1 Zeichen enthält.

Dein QString scheint einen Dateinamen oder einen Pfad zu enthalten.
Sie dir QFile::encodeName an und dessen Rückgabewert
QCString an.

Ciao,
_

HeReSY
19-02-2003, 12:53
Hab ich zuerst glsichgesetzt, so wie ich das weiter oben geschrieben hatt.
Hab dann mal strcpy ausprobiert, und das klappt jetzt.
Klappt mit latin1() und QFile::encodeName.

HeReSY

anda_skoa
19-02-2003, 17:43
Original geschrieben von HeReSY
Hab ich zuerst glsichgesetzt, so wie ich das weiter oben geschrieben hatt.
/quote]

Ah, das hab ich gar nicht gesehen.

Arrays muss man kopieren.

[quote]
Hab dann mal strcpy ausprobiert, und das klappt jetzt.
Klappt mit latin1() und QFile::encodeName.


Wie gesagt auf jeden Fall QFile::encodeName benutzen.

Ciao,
_