Problem mit Konvertion string to Qstring

Alles rund um die Programmierung mit Qt
Antworten
agbamobl
Beiträge: 18
Registriert: 12. März 2009 16:16

Problem mit Konvertion string to Qstring

Beitrag von agbamobl »

Hallo Leute ich habe ein Problem ich habe eine Funktion geschrieben um die aktuelle
programme, die auf ein user laufen zu ermitteln.

Code: Alles auswählen

string app_list(int zeile)
{
        string befehl_app_anzahl; // Befehl um die app_anzahl von browser zu bekommen.
    int anzahl_app;     // Die App_anzahl wird in dieser Variante gespeichert.

        string login_name = getlogin();  //login_name zu ermitteln.
        string befehl_tail = " -o comm --no-headers";

    befehl_app_anzahl = "ps -u ";
        befehl_app_anzahl = befehl_app_anzahl + login_name;
        befehl_app_anzahl = befehl_app_anzahl + befehl_tail;


        anzahl_app = user_app_anzahl();
        string app_names [anzahl_app]; // Die Namen aller Applikationen werden in diesem Array gespeichert.
        int i=1;
        FILE *fp;
        char line[30];  Definieren ein Buffer

        //Speichert jeder Zeile im Array lwpid.
        fp = popen(befehl_app_anzahl.c_str(), "r");
        while (fgets(line, sizeof line, fp))
        {
                //printf("Value of char line %d is %s", i , line);
                app_names[i] = line;
                //cout << " Id of thread " << i << " is" << lwpid[i]<< endl;
                i++;
        }
        pclose(fp);

  return app_names [anzahl_app];

}



Für den Aufruf in mein programm habe ich :

Code: Alles auswählen


ergebnis = new QLabel ( this);


    for(int i=1;i<anzahl;i++)
       {
              string buf = app_list(i);
              std:: string ss(buf);
              QString qs(ss.c_str());
               ergebnis->setText(qs);

       }

Die Function laüft ohne problem nur bei der Konvertierung in QString bekommen ich solche zeichen :"
`e 8hD `e`e
bitte Hilfe
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Um sowas herauszufinden gibt es was das nennt sich "Debugger". Der Code ist ausserdem nicht gerade selbsterklärend... warum z.B. wird "zeile" nicht benötigt?
Trotzdem: return app_names [anzahl_app]; zeigt über das Array hinaus. Der letzte Eintrag wäre app_names [anzahl_app-1].
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag von RavenIV »

Es gibt ein QString::fromStdString(std::string)
Das solltest Du Dir mal anschauen.

Für Hilfe zu Qt gibt es den Qt Assistant. Wurde mit Wt installiert.
Linux, das längste Text-Adventure aller Zeiten
Antworten