Probleme mit QString bzw. Zeichen im QString



  • Hi, hab schematisch in etwa folgenden QString angelegt:

    QString Text = "FEHLER! " + "Exit-Status: " + Status + " Error-Code: " + Prozess.error() + " blockMeshDict File konnte nicht erstellt werden!"
                    + "hhh"
                    + "hhh"
                    + "hhh"
                    + "hhh"
                    + "hhh"
                    + "hhh"
                    + "hhh";
    

    --> Anmerkung: Status ist eine vorher definierte Variable des Enums QProcess::ExitStatus und Prozess.error() ne Methode wie man sieht.

    Bekomme beim Compilieren aber folgende Fehlermeldung:

    Form.cpp:5195:49: Fehler: ungültige Operanden der Typen »const char [9]« und »const char [14]« für binäres »operator+«
    

    Weiss nicht ganz was der liebe Compiler hier von mir will. Irgendwelche Vorschläge?

    Gruß



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ich verstehe nicht ganz, wieso SeppJ das Thema verschoben hat, weil es kein Problem ist, was Qt sondern was C++ betrifft:

    "FEHLER! " + "Exit-Status: "
    

    geht nicht, da char[] keinen binären operator+ besitzt - das sagt dir auch die fehlermeldung schon 😉
    Gibt mehrere Möglichkeiten zur Abhilfe:

    1. "FEHLER! Exit-Status: "
    2. QString("FEHLER! ") + "Exit-Status: "
    3. const QString error = "FEHLER!"; const QString exit_state = "Exit-Status"; error + ' ' + exit_state
    4. stringstream ss; ss << "FEHLER! " << "Exit-Status: "
      (3 + 4 zusammen)
    5. wie 4) mit std::string, in der hoffnung, dass der compiler dann besser optimieren kann
      etc.

    bb



  • QString Text = QString( "FEHLER! Exit-Status: %1 Error-Code: %2 blockMeshDict File konnte nicht erstellt werden!" ).arg( Status ).arg(Prozess.error());
    

    Wenn man mit Qt programmieren möchte, sollte man allerdings C++ beherrschen. Die Fragestellung deutet nicht darauf hin ...



  • Danke Männers,

    hab von unskilled die Lösungen 2) und 3) kombiniert.

    @manni: hier und da hat man halt seine Lücken :D.

    An anderen Stellen hatte ich auch zB. damit

    QString Befehl = "f6 " + Pfad  + "/eo.w6";
    

    keine Probleme beim Kompilieren.

    Gruß



  • Chaka schrieb:

    An anderen Stellen hatte ich auch zB. damit

    QString Befehl = "f6 " + Pfad  + "/eo.w6";
    

    keine Probleme beim Kompilieren.

    Ist ja auch klar. Es gibt ja auch

    QString operator+(char const*, QString const&);
    QString operator+(QString const&, char const*);
    

    aber eben kein

    QString operator+(char const*, char const*);
    

    Wäre ja mehr als ungeschickt...



  • Hi,

    vielleicht könnt ihr mir nochmal weiterhelfen. Mir ist gerade noch etwas aufgefallen.

    Den genannten QString schreibe ich anschließend in einen QtextBrowser mit

    Dialog->textBrowserMeldung -> setText(Text);
    

    Problem ist, dass die Variable "Status" garnicht und anstatt von Prozess.error() nur ein kleines Quadrat angezeigt werden. Was muss ich denn da ändern?



  • Chaka schrieb:

    Problem ist, dass die Variable "Status" garnicht und anstatt von Prozess.error() nur ein kleines Quadrat angezeigt werden. Was muss ich denn da ändern?

    Den String richtig zusammenbauen.



  • Hmmm, kann mir jemand vielleicht nen Link geben wo ich nachschauen kann wie ich den/einen "String richtig zusammenbaue" ? 🙂



  • Chaka schrieb:

    Hmmm, kann mir jemand vielleicht nen Link geben wo ich nachschauen kann wie ich den/einen "String richtig zusammenbaue" ? 🙂

    http://www.c-plusplus.net/forum/p2198942#2198942



  • Damit gehts ja wirklich einwandfrei. Dankeschön 🙂



  • arghonaut schrieb:

    Chaka schrieb:

    An anderen Stellen hatte ich auch zB. damit

    QString Befehl = "f6 " + Pfad  + "/eo.w6";
    

    keine Probleme beim Kompilieren.

    Ist ja auch klar. Es gibt ja auch

    QString operator+(char const*, QString const&);
    QString operator+(QString const&, char const*);
    

    aber eben kein

    QString operator+(char const*, char const*);
    

    Wäre ja mehr als ungeschickt...

    Auch wenn der Thread schon älter ist. Mich interessiert, warum es mehr als ungeschickt wäre

    QString operator+(char const*, char const*);
    

    zu implementieren. Ich fände diese Operation sehr hilfreich. Ist das zu unperformant oder so? Hoffe noch auf eine Antwort.

    Mit freundlichen Grüßen,
    DarkBug



  • Ist dies

    QString Befehl = "Hello" + _(" ") + "World";
    

    im Gegensatz zu dem

    QString Befehl = "Hello" + QString(" ") + "World";
    

    unperformanter?


Anmelden zum Antworten