Der Unterschied _ttof, atof, _atof_l, _wtof, _wtof_l in C++ und C ist, dass diese verschiedene Eingaben haben, aber die Ausgabe immer eine Gleitkommazahl sind!Wie Sie sich vorstellen können, gibt es unter all diesen Funktionen Gute und Schlechte. Es gibt zum Beispiel veraltete Funktionen seit den ersten Versionen der libc, die aus Kompatibilitätsgründen nie entfernt wurden. Es ist daher nicht sehr überraschend, dass wir manchmal heilige Perlen in der Bibliothek entdecken. Zu diesen Perlen gehören die Funktionen atoi () , atol () und atof () ,_wtof(), _ttof mit denen eine Zeichenfolge in eine kurze ganze Zahl, eine lange ganze Zahl und eine Gleitkommazahl umgewandelt werden kann. Um einen wchar zu konvertieren, verwendet man: _wtof, _wtof_l Um einen char zu konvertieren, verwendet man: atof, atof_l Bei einem gemischten Programm in _UNICODE und Nicht-UNICODE greift man zu _ttof, dass dieser je nach Definition sich anpasst. (ist in <tchar.h> definiert) #include <tchar.h>
// Konvertierungscode von CString zu int
CString strText = _T("123");
int n;
n = _ttoi(strText); // In eine Ganzzahl konvertieren
// Ergebnis: n = 123
// Konvertierungscode von CString zu double
CString strText = _T("123.456");
double d;
d = _ttof(strText); // In eine Gleitkommazahl konvertieren
// Ergebnis: d = 123,456
// atof-Funktion zum Konvertieren von Zeichenfolgen in Gleitkommazahlen
atof(" 33.364 ") = 33.364
_wtof(L" 333.64") = 333.64
atof("3.14127") = 3.14127
atof(" -2,309e-25") = -2.000000e+00
// _atof_l-Funktion zum Konvertieren von Zeichenfolgen in Gleitkommazahlen mit einer bestimmten Lokaleinstellung (z. B. "fr" für französische Dezimaltrennzeichen)
_atof_l(" -2,309e-25", fr) = -2.309000e-25
Die Kommentare erläutern die verschiedenen Konvertierungsoperationen, wie sie in Ihrem Code durchgeführt werden, und geben Beispiele für die Ergebnisse der Konvertierungen. Beachten Sie, dass die Verwendung von _ttoi und _ttof von der Verwendung von "CString" abhängt, was auf den Verwendungskontext und das verwendete C++-Framework oder die MFC (Microsoft Foundation Classes) hinweist. Die atof- und _atof_l-Funktionen sind standardmäßige C/C++-Funktionen zum Konvertieren von Zeichenfolgen in Gleitkommazahlen, während _wtof Zeichenfolgen in Gleitkommazahlen konvertiert, wenn das Zeichenfolgenliteral als L-zeichenfolge (Wide String) deklariert ist. // Konvertierung von Zeichenfolgen in Ganzzahlen
int intValue = atoi("123"); // atoi konvertiert eine Zeichenfolge in eine Ganzzahl
// Ergebnis: intValue = 123
// Konvertierung von Zeichenfolgen in Gleitkommazahlen
double doubleValue = atof("123.456"); // atof konvertiert eine Zeichenfolge in eine Gleitkommazahl
// Ergebnis: doubleValue = 123.456
// Konvertierung von Zeichenfolgen in Gleitkommazahlen mit deutschem Dezimaltrennzeichen
setlocale(LC_NUMERIC, "de_DE"); // Setzt die Lokaleinstellungen auf Deutsch
double germanDoubleValue = atof("123,456"); // atof konvertiert eine Zeichenfolge in eine Gleitkommazahl mit deutschem Dezimaltrennzeichen
// Ergebnis: germanDoubleValue = 123.456
// _wtof-Funktion konvertiert breitzeichenfolgen (wide strings) in Gleitkommazahlen
double wideStringValue = _wtof(L"333.64"); // _wtof konvertiert eine breitzeichenfolge in eine Gleitkommazahl
// Ergebnis: wideStringValue = 333.64
// Konvertierung von Zeichenfolgen in Gleitkommazahlen unter Berücksichtigung der Dezimaltrennzeichen-Lokaleinstellungen
setlocale(LC_NUMERIC, "fr_FR"); // Setzt die Lokaleinstellungen auf Französisch
double frenchDoubleValue = atof("3.14127"); // atof konvertiert eine Zeichenfolge in eine Gleitkommazahl mit französischem Dezimaltrennzeichen
// Ergebnis: frenchDoubleValue = 3.14127
// _atof_l-Funktion konvertiert Zeichenfolgen in Gleitkommazahlen unter Berücksichtigung der Dezimaltrennzeichen-Lokaleinstellungen
locale_t fr = newlocale(LC_ALL_MASK, "fr_FR", (locale_t)0); // Erzeugt ein französisches Lokaleinstellungen-Objekt
double frenchDoubleValue2 = _atof_l(" -2,309e-25", fr); // _atof_l konvertiert eine Zeichenfolge in eine Gleitkommazahl mit französischem Dezimaltrennzeichen
// Ergebnis: frenchDoubleValue2 = -2.309e-25
FAQ 24: Aktualisiert am: 1 November 2023 12:23 |
