Array aus QString's

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
hustala
Beiträge: 2
Registriert: 2. Dezember 2009 14:29

Array aus QString's

Beitrag von hustala »

Hallo allerseits

Ich hab da eine kleine Frage und zwar möchte ich ein Array aus QString's machen und dieses befüllen.

Code: Alles auswählen

mStateMessage[255] = new QString();
mStateMessage[0]->fromAscii("000");
cout <<"GateMessage[0] =" << mStateMessage[0]<<endl;
die Ausgabe lautet: GateMessage[0] = 0xbfacf1a8

Nun sieht mir das eher nach der Adresse aus. Ich möchte aber auf den text im String zugreifen. Kann mir da jemand eine erklärung geben?
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Wie wärs mit

Code: Alles auswählen

QStringList myValues;
myValues <<"000"<<"111"<<"222";
Zur not könnte man auch einfach in der dokumentation nachschlagen...
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Array aus QString's

Beitrag von franzf »

hustala hat geschrieben:Ich hab da eine kleine Frage und zwar möchte ich ein Array aus QString's machen und dieses befüllen.

Code: Alles auswählen

mStateMessage[255] = new QString();
mStateMessage[0]->fromAscii("000");
cout <<"GateMessage[0] =" << mStateMessage[0]<<endl;
Da mangelt es aber an C++-Kenntnissen.
Wenn die Größe statisch ist, also zur Compilezeit bekannt, ist es unsinnig, das Array über new anzulegen.

Code: Alles auswählen

QString myStrings[255];
Wenn es dynamisch sein soll, stimmt deine Syntax auch nicht:

Code: Alles auswählen

QString* myStrings = new QString[255];
Aber da du C++ programmierst und nicht C, verwendest du bitte auch Containerklassen. QStringList wurde bereits erwähnt, das wäre ein guter Anfang.
Wenn du was schnelles indexbasiertes brauchst, wäre QVector<QString> eine gute Alternative. Damit ist dann der Zugriff myStrings[200] in konstanter Zeit möglich.
hustala
Beiträge: 2
Registriert: 2. Dezember 2009 14:29

Beitrag von hustala »

OK danke für die antworten.

Dann werde ich nochmal hinter die bücher gehen hehe.

klappt bestens mit QVector. Hab ich noch nicht gekannt :P

Code: Alles auswählen

QVector<QString> mStateMessage(255);
    for(int i = 0 ; i < 255 ; i++)
    {
        QString s;
        if(i < 10)
        {   s = "00" + s.setNum(i);
        }else if(i < 100)
        {   s = "0" + s.setNum(i);
        }else
        {   s.setNum(i);
        }
        mStateMessage[i] = s;
        cout << "mStateMessage["<<i<<"]: " << mStateMessage[i].toStdString() << endl;
    }
output stimmt

danke nochma
Antworten