2k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Wieso funktionirt das nicht?:

int x;
x = atoi(t1->Text);



stdlib.h ist richtig importiert.. :S
Er meckert aber, "string kan nicht in int convertirt werden" - logisch, deshalb verwende ich ja atoi... :/

4 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Das liegt daran, dass atoi() für altmodische Zeichenketten konzipiert ist statt neumodische Strings - das sind unterschiedliche Datentypen. Deine Lösung ist jedoch trivial:
int x;
x = atoi(t1->Text.c_str());
0 Punkte
Beantwortet von
danke, funktionirt aber noch nicht. :)

er regt sich auf, dass .c_str() ->c_str() sein sollte - was auch nicht geht.
Was muss ich denn importiren, um cstr verwenden zu können?

sollte doch eigentlich alles abdecken:
#include <stdlib.h>
#include <iostream>
#include <cstring>
#include <string>



Danke! :)
0 Punkte
Beantwortet von
ich denke mal dein problem hat mit atoi() nichts zu tun

gibt mal den vollständigen quellcode hier rein.

lagere den array zugriff mal aus der atui() funktion aus, damit du den mit dem debugger bequemer anfassen kannst, zB

anstatt:

int x;
x = atoi(t1->Text);

schreibe

int x;
char *y;

y = t1->Text;
x = atoi( y);



dann kannste zu y hinsteppen und mit den zeigern spielen :-)

LG
0 Punkte
Beantwortet von Experte (3.2k Punkte)
die schreibweise mit t1->Text klingt verdächtig nach Borland. Sollte also der Typ von t1->Text AnsiString sein (is standart bei borland), sollte es eig gehn mit:
int x= t1->Text.ToInt()

übrigens: falls in t1->Text keine zahl steht, wird ne exception geworfen. gab noch ne andere möglichkeit, das zu verhindern, kann ich mich aber grad nich mehr dran erinnern (hab kein borland mehr). Musste halt try-catch benutzen.

Ele
...