Integerwet-Wert eines Zeichens
-
Warum klappt das:
AnsiString a; int x; a="A"; x=StrToInt(a);nicht?
Wie bekomme ich den Wert des Zeichens?
DiV
arne
-
arne schrieb:
AnsiString a; int x; a="A"; x=StrToInt(a);Hi,
dasmit wandelst du das A in einen Integr um! Das geht aber neicht da A ja keine Zahl ist...Das was du willst geht so:
char Zeichen = 'A'; int Wert = (int)Zeichen;Das geht, weil char eigentlich auch nur ein Integer ist...
MfG
Alexander Sulfrian
-
Und wie kann ich eine Variable vom Typ String in char convertieren?
AnsiString a ="Bitte"; int Wert; char x = a.SubString(1,1);//geht nicht Wert = x;Klappt leider nicht

DiV
arne
-
Hi, SubString liefert als Rückgabewert einen String, auch wenn dieser nur aus einem Zeichen besteht gilt er als String, verwende lieber
char* c = a.c_str(); Wert = c[1];das müsste meines wissens nach gehen, leider habe ich auch keine Funktion gefunden die direkt einen Char zurück liefert, wie beim klassischen string die at funktion.
@alex: ist in C++ nicht int(Zeichen) gebräuchlicher?
Gruß
Auron
-
Du meintest sicher:
Wert = c[0];
Klappt aber prima! Danke!
-
jo, das meinte ich... obwohl beim string hallo auch c[1] gehen würde, das wäre dann eben der wert von a.
Kein Problem, ich helfe gerne mit meinem Zwergenwissen *g*
-
Effizienter ist allerdings:
AnsiString test = "Hallo"; int x = test[0];.c_str() ist zu vermeiden, sobald man mehr als nur auslesen will...
-
Hi,
und bei Strings ist das erste Element natürlich 1! Also ist String[0] nicht der erste Buchstabe....MfG
Alexander Sulfrian
-
lol
das is ja einfach ^^wusste nicht, dass man die mit [] benutzen kann, das is natürlich sauberer.
@alex: das find ich eh lustig, manches hat ner 1'er index anderes den 0'er ^^naja, whatever.
Auron
-
Alexander Sulfrian schrieb:
und bei Strings ist das erste Element natürlich 1
Danke, hatte ich doch glatt übersehen...

-
Auron_X schrieb:
@alex: das find ich eh lustig, manches hat ner 1'er index anderes den 0'er ^^
Hi,
naja eigentlich hat alles außer String einen 0'er Index. Ist in C++ ja auch nur so eigentlich möglich. Das mit dem 1'er beim String kommt daher, dass die VCL und damit auch AnsiString in Delphi (also ObjectPascal) geschrieben wurde und eigentlich nicht in C(++). In Delphi was es üblich (bzw. nötig) in dem Index 0 beim String die Länge zu speichern (bei C++ ist das nicht nötig da String mit \0 beendet wird). Und daher ist auch bei AnsiString (und String) der erste Buchstabe beim Index 1!Wollte ich nur mal so zur Info beitragen....
MfG
Alexander Sulfrian