C ++ wcstof () - C ++ Standardbibliothek

Die Funktion wcstof () in C ++ interpretiert den Inhalt einer breiten Zeichenfolge als Gleitkommazahl und gibt ihren Wert als Gleitkommawert zurück.

Diese Funktion setzt auch einen Zeiger, der auf das erste breite Zeichen nach dem letzten gültigen Zeichen der breiten Zeichenfolge zeigt, falls vorhanden, andernfalls wird der Zeiger auf null gesetzt.

Es ist in der Header-Datei definiert.

wcstof () Prototyp

 float wcstof (const wchar_t * str, wchar_t ** str_end);

Die Funktion wcstof () verwendet eine breite Zeichenfolge und einen Zeiger auf ein breites Zeichen als Parameter, interpretiert den Inhalt der breiten Zeichenfolge als Gleitkommazahl und gibt einen Gleitkommawert zurück.

wcstof () Parameter

  • str: Eine breite Zeichenfolge mit der Darstellung einer Gleitkommazahl.
  • str_end: Zeiger auf einen Zeiger auf ein breites Zeichen. Der Wert von str_end wird von der Funktion auf das nächste Zeichen in str nach dem letzten gültigen Zeichen gesetzt. Dieser Parameter kann auch ein Nullzeiger sein.

wcstof () Rückgabewert

Die Funktion wcstof () gibt Folgendes zurück:

  • Ein Float-Wert (der aus der breiten Zeichenfolge konvertiert wird).
  • 0.0, wenn keine gültige Konvertierung durchgeführt werden konnte.

Wenn der konvertierte Wert außerhalb des Bereichs liegt, tritt ein Bereichsfehler auf und ein positiver oder negativer HUGE_VAL wird zurückgegeben.

Beispiel 1: Wie funktioniert die Funktion wcstof ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"40.001u220fc12"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Wide String = 40.001∏c12 Float-Wert = 40.001 End String = ∏c12

Beispiel 2: Funktion wcstof () ohne nachgestellte Zeichen

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"791.513"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Wide String = 791.513 Float-Wert = 791.513 End String =

Ein gültiger Gleitkommawert für die Funktion wcstof () besteht aus einem optionalen + oder - Vorzeichen, gefolgt von einer der folgenden Mengen:

  • Für dezimalen Gleitkommawert :
    • Eine Gruppe von Dezimalstellen (0-9), die optional einen Dezimalpunkt (.) Enthält. Zum Beispiel: 13.170, -5.63 usw.
    • Ein optionaler Exponententeil (e oder E), gefolgt von einem optionalen + oder - Vorzeichen und einer nicht leeren Folge von Dezimalstellen. Zum Beispiel: 3.46101e + 007, 13.19e-013 usw.
  • Für hexadezimalen Gleitkommawert :
    • Eine Zeichenfolge, die mit 0x oder 0X beginnt, gefolgt von einer nicht leeren Folge von hexadezimalen Ziffern, die optional einen Dezimalpunkt (.) Enthält. Zum Beispiel: 0xfa5, -0xb1f.24 usw.
    • Ein optionaler Exponententeil (p oder P), gefolgt von einem optionalen + oder - Vorzeichen und einer nicht leeren Folge von hexadezimalen Ziffern. Zum Beispiel: 0x51c.23p5, -0x2a.3p-3 usw.
  • Unendlichkeit :
    • INF oder INFINITY (Groß- / Kleinschreibung ignorieren). Zum Beispiel: -Inf, InfiNiTy usw.
  • NaN (keine Zahl) :
    • NAN- oder NAN-Sequenz (Groß- und Kleinschreibung ignorieren) wobei die Sequenz eine Folge von Zeichen ist, die nur aus alphanumerischen Zeichen oder dem Unterstrich (_) besteht. Das Ergebnis ist eine ruhige NaN. Zum Beispiel: Nan, NaNab1 usw.

Beispiel 3: Wie funktioniert wcstof () mit Exponenten und Hexadezimalen?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"39.119e+2xxu0a93"; wchar_t str2() = L"0Xf1.23cu00d8a1"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Breiter String = 39.119e + 2xx ઓ Float-Wert = 3911.9 End-String = xx ઓ Breiter String = 0Xf1.23cØa1 Float-Wert = 241.14 End-String = Øa1

Beispiel 4: wcstof Fälle für INFINITY und NaN

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"-inFinityxu03a3y"; wchar_t str2() = L"NaN11u0429"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Wide String = -inFinityxΣy Float-Wert = -inf End String = xΣy Wide String = NaN11Щ Float-Wert = nan End String = 11Щ

Im Allgemeinen hat ein gültiges Gleitkommaargument für die Funktion wcstof () die folgende Form:

 (Leerzeichen) (- | +) (Ziffern) (.Ziffern) ((e | E) (- | +) Ziffern)

Die Funktion wcstof () ignoriert alle führenden Leerzeichen, bis das primäre Nicht-Leerzeichen gefunden wird.

Ausgehend von diesem Zeichen werden dann so viele Zeichen wie möglich verwendet, um eine gültige Gleitkommadarstellung zu bilden und diese in einen Gleitkommawert umzuwandeln. Was nach dem letzten gültigen Zeichen von der Zeichenfolge übrig bleibt, wird in dem Objekt gespeichert, auf das str_end zeigt.

Beispiel 5: Funktion wcstof () mit führendem Leerzeichen

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 21.69u04f8aa"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Wide String = 21.69Ӹaa Float-Wert = 21.69 End String = Ӹaa

Interessante Beiträge...