CString nach Integer

medusaman

Grünschnabel
Hallo,

Ich bin gerade dabei mich ein bisschen in C++ mit MFC einzuarbeiten, jetzt stehe ich allerdings vor folgendem Problem:
Ich habe eine Edit-komponente in die ein wert eingegeben werden soll, mit diesem wert woll dann eine rechnung durchgeführt werden.
Der Eingabe in die Edit Komponente ist vom Typ CString, wenn ich den addiere ist klar was passiert. wie kann ich das jetzt in eine Integer-variable umwandeln ?
Ich habe bis jetzt immer nur Delphi programmiert, da gab es so eine Funktion "StrToInt" gibt es sowas auch in C++ ?
 
Es gibt die Funktionen "int atoi(c_str)" und "float atof(c_str)".
(AsciiToInt, AsciiToFloat)

das könte z.B. so aussehen:

char* FloatWert="123.456";
float fliesskomma;
String WerteString;
int Wert;

Wert=atoi(WerteString.c_str());
fliesskomma=atof(FloatWert);

Die Funktionen erwarten einen String
im Stil von c, darum muss man eine Stringklasse erst anweisen, einen solchen zurückzugeben.
 
natürlich :)

char myString[100]; //muss halt lang genug für den
//resultierenden String sein
float myFloat=3.14;

sprintf(myString, "%f",myFloat);


Ansonsten gelten die üblichen printf-Konventionen, %d für integer usw...
 
Vielleicht etwas spät....

Wenn Du ein Eingabefeld verwendest stellt sich die Frage, wenn auf einem Dialog oder Formular, warum dann nicht gleich den richtigen Datentyp mit DoDataExchange-Mechanismus verwenden!
Im Class-Wizard lassen sich Membervariablen in verschiedene Datentype für ein Eingabefeld anlegen.
 
Im Falle der Umwandlung von CString nach int, double oder float, war das ganz gut. Der Umgekehrte Weg für eine CString-Editfeld ist einwenig anders.
Wenn m_edit vom Typ CString deine Membervariable des Editfeldes ist dann mach das folgendermaßen:

int ganzzahl = 1234;
double fliesskomma = 1234.1234;
m_edit.Format("%d", ganzzahl) //dann gilt für m_edit = "1234"
m_edit.Format("%.2lf", fliesskomma)// dann gilt für m_edit = "1234.12"

PS. die Formatierung ist genauso wie bei printf(); also verwende "%.2lf" um den double-Wert in einen String mit 2 Nachkommastellen umzuwandeln, wenn du den Wert genau haben willst lass einfach .2 weg.

Gruss Homer
 

Neue Beiträge

Zurück