Anzeige:
Ergebnis 1 bis 7 von 7

Thema: QString in char* umwandeln

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Ort
    Witten
    Beiträge
    41

    QString in char* umwandeln

    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

  2. #2
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    das kann nicht sein.
    waere es vielleicht moeglich das du als rueckgabewert eine hexadezimal adresse bekommen hast?

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Ort
    Witten
    Beiträge
    41
    Nö,

    Code:
    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

  4. #4
    Registrierter Benutzer Avatar von tuxipuxi
    Registriert seit
    30.08.2002
    Beiträge
    667
    ich glaube es muss:
    Code:
    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?

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Ort
    Witten
    Beiträge
    41
    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

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    [QUOTE]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.


    Hab dann mal strcpy ausprobiert, und das klappt jetzt.
    Klappt mit latin1() und QFile::encodeName.
    Wie gesagt auf jeden Fall QFile::encodeName benutzen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •