Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: FAQ - MFC ::  Casten - CString in double     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
mathi
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.02.2002
Beiträge: 511
Beitrag mathi Mitglied 15:14:00 04.06.2002   Titel:   Casten - CString in double            Zitieren

Hallo, ich habe einen CString, dessen Inhalt ich in einen double-Wert konvertieren möchte. Das kann die Funktion atof(..). Die liefert aber 0.0 zurück, wenn der String nicht konvertiert werden konnte, naja, aber eben auch 0.0, wenn im String "0.0" steht.

Gibt es da eine andere Möglichkeit, bei der ich diese beiden Fälle unterscheiden kann?

Gruß mathi


Zuletzt bearbeitet von estartu am 10:34:28 16.01.2006, insgesamt 1-mal bearbeitet
Werbeunterbrechung
PanicMan
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.03.2002
Beiträge: 286
Beitrag PanicMan Mitglied 15:38:00 04.06.2002   Titel:              Zitieren

atof ist in float. nimm atoi

_________________
Wissen <- Verstehen <- Sehen <- Erkennen <- Wissen.

Soviel zum Thema Rekursion...
dEUs
Moderator

Benutzerprofil
Anmeldungsdatum: 16.05.2001
Beiträge: 11761
Beitrag dEUs Moderator 15:40:00 04.06.2002   Titel:              Zitieren

lol :D
Dann hat er seinen double als int :D

_________________
Gruß,
dEUs
-Mod im MFC & C#-Forum-
mathi
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.02.2002
Beiträge: 511
Beitrag mathi Mitglied 15:44:00 04.06.2002   Titel:              Zitieren

Also, laut MSDN ist der return-Wert von atof double. Aber float wäre auch kein problem.

Aber welche Möglichkeiten habe ich die beiden besagten Fälle zu unterscheiden?
MacReeg
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.05.2002
Beiträge: 153
Beitrag MacReeg Mitglied 15:53:00 04.06.2002   Titel:              Zitieren

Hallo mathi !

Dein Problem ist ein bischen verzwickt, da Du eine Unterscheidung zwischen Zahleneingabe und nur Texteingabe haben willst. Ich habe mal ein bischen in der MSDN Library rumgeblättert und eine Funktion namens strtod() gefunden und dazu eine kleine Routine geschrieben die Dein Problem lösen könnte.

C/C++ Code:
    char*   Rest;                               // Zeiger für den Rest des CStrings
    CString Text = "12.34Und hier ist Ende";    // der zu bearbeitende Text

    DOUBLE Wert = strtod(Text,&Rest);           // Zerlegung des CStings in Zahl und Resttext
    if (Text == Rest) MessageBox("Es konnte keine Zahl entnommen werden","Meldung",MB_OK);  // Meldung wenn nur Text vorhanden
C/C++ Code:
char* Rest; // Zeiger für den Rest des CStrings
CString Text = "12.34Und hier ist Ende"; // der zu bearbeitende Text

DOUBLE Wert = strtod(Text,&Rest); // Zerlegung des CStings in Zahl und Resttext
if (Text == Rest) MessageBox("Es konnte keine Zahl entnommen werden","Meldung",MB_OK); // Meldung wenn nur Text vorhanden
C/C++ Code:
    char*   Rest;                               // Zeiger für den Rest des CStrings
    CString Text = "12.34Und hier ist Ende";    // der zu bearbeitende Text

    DOUBLE Wert = strtod(Text,&Rest);           // Zerlegung des CStings in Zahl und Resttext
    if (Text == Rest) MessageBox("Es konnte keine Zahl entnommen werden","Meldung",MB_OK);  // Meldung wenn nur Text vorhanden


Die Funktion splittet den CString in zwei Teile, einmal in den Double-Wert (hier 12.34) in der Variable Wert und in den Rest des Textes (in diesem Fall "Und hier ist Ende"). Sollte also nur eine Texteingabe erfolgen, so ist der Inhalt von der Variablen Text und der Variablen Rest der gleiche da keine Zahl in dem CString vorhanden war.

Gruß MacReeg

_________________
eMail: info@inc-x.de
Internet: www.inc-x.de
mathi
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.02.2002
Beiträge: 511
Beitrag mathi Mitglied 17:40:00 04.06.2002   Titel:              Zitieren

He, He, ...
Das funktioniert ja Super!

Danke und Gruß mathi
dEUs
Moderator

Benutzerprofil
Anmeldungsdatum: 16.05.2001
Beiträge: 11761
Beitrag dEUs Moderator 18:10:00 04.06.2002   Titel:              Zitieren

Ich denke, das ist FAQ-würdig :)

_________________
Gruß,
dEUs
-Mod im MFC & C#-Forum-
C/C++ Forum :: FAQ - MFC ::  Casten - CString in double   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.