char array in variable umwandeln

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

char array in variable umwandeln

Beitrag von CaptnChaos »

Hallo.
Ich bin zwar kein Anfänger mehr :wink: aber ich habe ein kleines C++ Problem.
Ich würde gerne aus einer Datei strings auslesen und daraus variablennamen generieren.
Um das mal zu verdeutlichen hier der ein kleines Beispiel:
Ich habe folgende klasse:

Code: Alles auswählen

class FileData
{
 int wert1;
 int wert2;
}
und das steht in der datei:

Code: Alles auswählen

FileData
{
wert1 : [int]100;
wert2 : [int]255;
}
nun würde ich in der FileData klasse gerne eine parse funktion haben, die die datei ausliesst und aus dem string "wert1" auf den member zugreift.

Sprich wenn ich parse habe ich folgende informationen:

Code: Alles auswählen

QString className       = "FileData"
QString memberName  = "wert1"
QString memberType   = "int"
QString memberValue  = "100" 
//per Macro oder wie auch immer
MEMBER(memberName) = memberValue.toInt()

Geht das?
Ginsengelf
Beiträge: 79
Registriert: 2. Mai 2007 10:21

Beitrag von Ginsengelf »

Moin, ich glaube so direkt kannst du das knicken, aber mit einer QMap < QString, int > (vielleicht auch int*, wie du willst) kannst du das erreichen.

Ginsengelf

edit: ich weiß nicht, wie das mit mehreren Typen parallel aussähe, das kann die QMap nicht.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

C++ iss ne eher statische sprache
variablennamen zur laufzeit anlegen umbenennen etc und so iss eher gar ned moeglich ...

aber eine zuordnung zu einem (dynamischen) string zu einem (dynamischen) Wert geht natuerlich schon .... aber alles ueber genau eine variable (mit nem festen namen :-) )

QMap<QString,int> myDynamicVariables;

myDynamicVariables["wert1"] = 100;
int i = myDynamicVariables["wert1"];

wobei
QString memberType = "int"
C++ natuerlich auch keine "Dynamischen Datentypen" kennt, und man sich da auch mit Tricks behelfen muss.
entweder selber unions schreiben, oder sowas wie QVariant dann benutzen ...
Ich bin zwar kein Anfänger mehr
Hasst du vorher viel mit Scriptsprachen gearbeitet ?

also merke:
in c++ hat eine variable immer den selben namen ... der vom compiler in nen symbol, und vom linker dann in ne speicherposition im codesegment aufgeloest wird !
die variablen sind fest, also spaetestens wenn der praeprozessor druebergelaufen ist, stehen die namen und damit die symbole unveraenderlich fest.
eine variable hat immer genau einen Typ ... der sich nie nie nie aendern kann .... Aufweichen (hintergehen) dieses prinzips erreicht man durch unions und casts ....

Vorteil der Sache: Performance und der compiler schuetzt einen sehr oft vor einem selbst, im gegensatz zu vielen scriptsprachen.

Ciao ...
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Ich will ja nichts dynamisches. ich will anhand des strings, der denn selben "namen" in sich trägt wie die variable auf dieselbe zugreifen.
ich weiss das man variablennamen mit hilfe eines macros in einen char array umwandeln kann. mich würde nur interessieren obs auch umgekehrt geht.
Antworten