double mit "komma" anstatt dem "." darstellen

hallo @ all

wir müssen gerage einen taschenrechner in mfc programieren
dieses teil kann auch das Rechnen mit imaginärzahlen.....wow....*G*
wie bringe ich meinem prog bei, dass es bei der ein und ausgabe
anstatt dem "." ein "komma" bei der double -Zahl verwendet......

thanks for any help ?(
 
Die Funktion fällt mir jetzt nicht ein, aber es gibt eine Funktion "string_replace". Damit kannst du bei der Ausgabe den Punkt gegen ein Komma tauschen.

Der Hesse
 
Den genauen Funktionsnamen, sowie den Funktionsaufruf kann ich Dir jetzt nicht sagen. Aber in der Theorie :

Bevor du die Variable ausgibst, erstellst du eine Stringvariable, durch string_replace tauschst du den Punkt gegen ein Komma aus, und gibst die veränderte Variable aus. Du kannst die Funktion nicht direkt auf eine double Variable anwenden. Das geht in die Hose.

Der Hesse
 
finde weder in der Hilfe vom visual studio.net , noch unter google einen kleinen lösungshinweis für string_replace....
hat jemand ein kleines Beispielprogramm??
ich mach es ansonsten übers umwandeln von typen

double in int =>positiver teil ... dann komma..... dann wieder int in double....
und den neuen wert von meiner ausgangszahl abziehen und schon habe ich die nachkommastellen.....

das geht ja ganz gut, doch es sollte itgendwo in der heiligen c++ Welt etwas schöneres geben oder......
 
Also ich hab mal gegooglet. Du hast eine Variable mit Namen TEXT die vom Typ STRING ist. Dann ist die Funktion replace aufrufbar über TEXT.replace

Aber Achtung, dies geht nur für C++ nicht C.

Zur Orientierung noch ein Beispiel aus PHP, welches stark an C erinnert. Bitte nicht probieren, geht in C natürlich so nicht :

Code:
$str = "Ich möchte einen neuen Computer kaufen"; 
$str = str_replace("Computer", "Laptop", $str); 
echo $str; 
//Ausgabe: Ich möchte einen neuen Laptop kaufen

Der Hesse
 
bin ich zu blöde.....

sring_replace wird von c++ nicht unterstützt.....

und übrigens willich keinen string umwandeln,sonrern einen double wert, den ich von meinem Fenster bekomme und den ich nach dem Rechnen wieder ans Fenster zurücksende....

double m_dReal1, m_dImag1,m_dReal2, m_dImag2;
double erg;

für alle werte will ich z.b.: 2,5234 anstatt 2.5234 eingeben können!!!!

das ganze will ich unter:

void CEingabeDlg:: DoDataExchange(CDataExchange* pDX)
{
CDialog:: DoDataExchange(pDX);
DDX_Text(pDX, IDC_REAL_OP1, m_dReal1);
DDX_Text(pDX, IDC_REAL_OP2, m_dReal2);
DDX_Text(pDX, IDC_IMAG_OP1, m_dImag2);
DDX_Text(pDX, IDC_IMAG_OP2, m_dImag1);
DDX_Text(pDX, IDC_RESULT, m_strResult);
}

machen, aber wieeeeeeeeeeeeeeeeeeeeeeeeeeeee??
 
Sorry Mann, aber du strapazierst meine Gedult. Ich bin raus.

1. Ich hab Dir geschrieben, dass du eine String-Funktion nicht auf double Werte anwenden kannst. Musste natürlich vorher umsetzen. Einen double Wert mit Komma gibt es nicht !!!
2. Wie deine Funktion aussehen muss, dass musst du schon selbst sehen. Mir sagt dein Code Schnipsel recht wenig.

3.

sring_replace wird von c++ nicht unterstützt.....

Hab ich nie behauptet.

Der Hesse
 
ach ihr hessen,ihr habt keine Nerven...*G*

Habs jetzt selbst hinbekommen!!

void CEingabeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);

DDX_Text(pDX, IDC_REAL_OP1, m_stReal1);
m_stReal1.Replace(",","."); //Austauschen von "," in "."
m_dReal1 = atof(m_stReal1); //Typumwandlung

DDX_Text(pDX, IDC_IMAG_OP1, m_stImag1);
m_stImag1.Replace(",","."); //Austauschen von "," in "."
m_dImag1 = atof(m_stImag1); //Typumwandlung

DDX_Text(pDX, IDC_REAL_OP2, m_stReal2);
m_stReal2.Replace(",","."); //Austauschen von "," in "."
m_dReal2 = atof(m_stReal2); //Typumwandlung

DDX_Text(pDX, IDC_IMAG_OP2, m_stImag2);
m_stImag2.Replace(",","."); //Austauschen von "," in "."
m_dImag2 = atof(m_stImag2); //Typumwandlung

DDX_Text(pDX, IDC_RESULT, m_strResult);
}

@ derhesse trotzdem dabke....
 
Zurück
Oben