PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++] int nach QString casten/konvertieren, geht das?



fraggo01
17-08-2004, 16:35
QSettings* settings;
settings = new QSettings();
settings -> insertSearchPath( QSettings::Unix, QDir::homeDirPath() );
settings -> beginGroup( ".TVgrabTool" );
int counter = settings -> readNumEntry( "/System/Zaehler" );
delete settings;
QString key = "/Aufnahmen/" + reinterpret_cast<std::string&>(counter) + "/";
writeconf( key );


also, die funktion writeconf() braucht einen QString.
Der soll so aussehen:

/Aufnahmen/x/

X soll ein int sein
Eigentlich ganz einfach dachte ich.
kompilieren tut er das auch, nur bricht es beim testen mit Segmentation Fault ab.

Ich hoffe ihr versteht was ich meine...

locus vivendi
17-08-2004, 16:43
Der reinterpret_cast ist vollkommen falsch. Mich würde ein Wenig interessieren warum du gerade den verwendest. Wenn du einen cast einsetzen wolltest, dann wäre static_cast bzw. der Konstruktor-Style cast der richtige (soll ja auch ein Konstruktor-Aufruf sein). Aber ein cast ist gar nicht nötig. Du kannst QString::number verwenden.

fraggo01
17-08-2004, 17:33
Alles klar habs mit QString::number hinbekommen.

Vielen Dank.

anda_skoa
18-08-2004, 05:31
Wenn du die Zahl in einen String einfürgen willst, also einen speziell formatierten String zusammensetzen willst, kann man da auch nette QString Methoden wie arg oder sprintf verwenden



int i = 5;
QString s = "/text/%0/text";
writeconfig(s.arg(i));


%0 wird durch den Wert des ersten arg() Aufrufs ersetzt.

Wenn man zB führende Nullen haben will, kann man das leicht mir sprintf machen


int i = 5;
QString s;
s.sprintf("text/%02d/text", i); // zwei Stellen, notfalls mit führenden Nullen


Ciao,
_