Seite 1 von 1

Array aus QString's

Verfasst: 26. Mai 2010 10:27
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?

Verfasst: 26. Mai 2010 10:39
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...

Re: Array aus QString's

Verfasst: 26. Mai 2010 11:08
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.

Verfasst: 26. Mai 2010 11:25
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