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 |