C ++ wcstold () - C ++ Standardbibliothek

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

Die Funktion wcstold () 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.

wcstold () Prototyp

 long double wcstold (const wchar_t * str, wchar_t ** str_end);

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

wcstold () 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.

wcstold () Rückgabewert

Die Funktion wcstold () gibt Folgendes zurück:

  • ein langer doppelter 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 wcstold ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410u03b7u05ea"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 93.410η ת Long Double value = 93.41 End String = η ת

Beispiel 2: Funktion wcstold () ohne nachgestellte Zeichen

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 93.410 Long Double value = 93.41 End String =

Ein gültiger Gleitkommawert für die Funktion wcstold () 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 wcstold () mit Exponenten und Hexadezimalen?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"34.901u00c6u00f1"; wchar_t str2() = L"0Xfc1.a12u03c7r12"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 34.901Æñ Long Double-Wert = 34.901 End String = Æñ Wide String = 0Xfc1.a12χr12 Long Double-Wert = 4033.63 End String = χr12

Beispiel 4: wcstold 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"NaN22u0429"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double 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 Long Double-Wert = inf End String = xΣy Wide String = NaN22Щ Long Double-Wert = nan End String = 22Щ

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

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

Die Funktion wcstold () 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 wcstold () mit führendem Leerzeichen

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 59.013u0915u0975"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 59.013 कॵ Long Double value = 59.013 End String = String

Interessante Beiträge...