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 Memberfunktion
    

    heiß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


Anmelden zum Antworten