fehler bei konventierung
-
Hallo,
habe folgenden Code:
char test = this->ergebnis->Text; int zahl = atof(test);
Folgender Fehler wird daraufhin ausgegeben:
error C2440: 'initializing' : cannot convert from 'System::String __gc *' to 'char'Was mache ich falsch?
Danke im Voraus für Eure Hilfe.
Gruß
Sven.
-
Hi !
double atof( const char *string );
int atoi( const char *string );Rueckgabewert beachten! Wenn du einen int haben willst, brauchst du atoi!
Gruss Jochen
-
Hallo,
warum atof wenn du in einen int schreiben willst?
mit der Fehlermeldung kann ich auch nichts anfangen, aber sollte atof nicht einen char * uebergeben bekommen?
-
und in einen einzelnen char wird dein text wohl nicht reinpassen!
da brauchst du ein char array (oder du nimmst gleich string).char test[] = blabla...
und dann atoi(test);
-
danke erst einmal.
das mit dem rückgabewert beachte ich jetzt.
doch die fehlermeldung ist mir immer noch ein rätsel.this->ergebnis ist ein textfeld!
naja, mal sehen, vielleicht bekomme ich es noch raus.
-
Is doch einfach:
'System::String __gc *' to 'char'
Der Compiler weis nicht wie er
einen Zeiger vom Typ System::String __gc* in ein einzelnes(!) Zeichen wandeln soll.
-
string test = this->ergebnis->Text; double zahl = atof(test);
klappt aber immer noch nicht, fehler:
error C2065: 'string' : undeclared identifier
error C2065: 'test' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'test'
error C3861: 'test': identifier not found, even with argument-dependent lookupsorry, bin noch anfänger!
-
wenn du schreibst
char test = ...
hast du nur 1Byte Platz!Da passt kein Text rein!
Also ein Array verwenden. char test[] = ...Und die Fehlermeldung bekommst du, weil du atoi einen char uebergibst, die Funktion aber einen char* (Zeiger auf char) will.
Zu Arrays und Pointern gibts bestimmt was in der FAQ.
Gruss Jochen
-
um den datentyp string verwenden zu koennen, musst du den richtgen haeder einbinden!
#include <string>
using namespace std;Aber dann wirst du auch schreiben muessen:
double zahl = atof(test.c_str());
Weil du aus dem String auch erst wieder einen char* machen musst.Gruss Jochen
-
habe es jetzt so:
char test[] = this->ergebnis->Text; double zahl = atof(test);
immer noch ein fehler
error C2440: 'initializing' : cannot convert from 'System::String __gc *' to 'char []'
-
char* test = blabla... ?!?!
-
fehler
error C2440: 'initializing' : cannot convert from 'System::String __gc *' to 'char *[]'
error C2664: 'atof' : cannot convert parameter 1 from 'char *[]' to 'const char *'
-
char* test = this->ergebnis->Text; double zahl = atof(test);
-
System::String __gc ist nicht im Standard enthalten.
Ich vermute es geht um einen System::String von .netDaher wirst Du mal in die Doku schauen müssen wie Du den .net String in char* bekommst.
(Zumal denke ich gibts im Framework andere Möglichkeiten ?!)
-
Nochmal genauer:
#include <string> using namespace std; string test = this->ergebnis->Text; double zahl = atof(test.c_str());
oder
char * test = this->ergebnis->Text.c_str(); double zahl = atof(test);
-
Entyl_Sa schrieb:
Nochmal genauer:
#include <string> using namespace std; string test = this->ergebnis->Text; double zahl = atof(test.c_str());
oder
char * test = this->ergebnis->Text.c_str(); double zahl = atof(test);
std::string hat keinen op= o.ä. der ein System:String entgegen nimmt. Und ich bezweifle das System::String die methode c_str() kennt
-
Wie wäre es mit
double zahl = this->ergebnis->Text.ToDouble();
?
(Vielleicht auch Text->, ich habe noch nicht viel mit Managed C++ gearbeitet.)