Komma antstatt Punkt als Dezimalstelle
-
Hallo zusammen
ich bin C++ Neuling und habe folgendes Problem:
Ich benutze eine EditControlBox mit einer float Variable und möchte, das die Eingabe auch mit einem Komma als Dezimaltrennzeichen funktioniert.
Wie kann ich das umsetzen?
-
Ersetze doch einfach das Komma durch einen Punkt bevor du den String umwandelst.
(CString::Replace(..))Edit: dazu musst du natürlich auf einen String abbilden und nicht auf einen float.
-
Erst mal Danke für die schnelle Antwort.
Kannst du mir die genaue Syntax posten - ich erhalte da nämlich die Fehlermeldung:
" error C2352: 'ATL::CStringT<BaseType,StringTraits>::Replace': Unzulässiger Aufruf einer nicht statischen Memberfunktion
-
CString strBla = _T("3,5"); strBla.Replace(_T(","), _T("."));PS:
Unzulässiger Aufruf einer nicht statischen Memberfunktionheißt, dass du die Funktion nicht mit
Klassenname::Funktion(...);aufrufen darfst sondern ein Objekt brauchst, also
VariablennameMitKlasseAlsTyp.Funktion(...);
-
Vielleicht sollte man das eleganter lösen. Der folgende Aufruf bewirkt nämlich, dass alle String-Konvertierungsroutinen den nutzerdefinierten Dezimalpunkt automatisch verwenden:
#include <locale.h> _tsetlocale(LC_NUMERIC, _T(""));Voraussetzung ist natürlich, dass das gewünschte Dezimalpunktzeichen unter "Systemsteuerung -> Ländereinstellungen" eingestellt ist.
Das funktioniert zunächst für die Funktionen der C-Laufzeitbibliothek. Bleibt zu hoffen, dass die MFC diese Funktionen direkt verwendet.Gruß Frdln
-
Vielen Dank,
bin echt begeistert von diesem Forum - super scnelle und kompetente Antworten. Hab das Problem gelöst bekommen