# CString nach Integer



## medusaman (30. März 2002)

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++ ?


----------



## Robert Martinu (30. März 2002)

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.


----------



## medusaman (30. März 2002)

danke ersmal dafür. aber geht das ganze auch noch umgekehrt, also float nach string ?
Danke schon mal im Vorraus!


----------



## Robert Martinu (30. März 2002)

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...


----------



## Xeragon (30. März 2002)

Oder in C++ per std::stringstream


----------



## goela (9. April 2002)

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.


----------



## Daniel Toplak (9. April 2002)

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


----------

