C ++ wcstold () - C ++ standaardbibliotheek

De functie wcstold () in C ++ interpreteert de inhoud van een brede tekenreeks als een getal met drijvende komma en retourneert de waarde ervan als een lange dubbele.

De functie wcstold () stelt ook een pointer zo in dat deze naar het eerste brede teken wijst na het laatste geldige teken van de brede tekenreeks als die er is, anders wordt de aanwijzer op nul gezet.

Het wordt gedefinieerd in het header-bestand.

wcstold () prototype

 lange dubbele wcstold (const wchar_t * str, wchar_t ** str_end);

De functie wcstold () neemt een brede tekenreeks en een pointer naar een breed teken als parameter, interpreteert de inhoud van de brede tekenreeks als een getal met drijvende komma en retourneert een lange dubbele waarde.

wcstold () Parameters

  • str: een brede tekenreeks met de weergave van een drijvende-kommagetal.
  • str_end: Pointer naar een pointer naar een breed teken. De waarde van str_end wordt door de functie ingesteld op het volgende teken in str na het laatste geldige teken. Deze parameter kan ook een null-pointer zijn.

wcstold () Retourwaarde

De functie wcstold () retourneert:

  • een lange dubbele waarde (die wordt geconverteerd van de brede string).
  • 0.0 als er geen geldige conversie kon worden uitgevoerd.

Als de geconverteerde waarde buiten het bereik valt, treedt een bereikfout op en wordt een positieve of negatieve HUGE_VAL geretourneerd.

Voorbeeld 1: Hoe werkt wcstold () functie?

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 93.410η ת Lange dubbele waarde = 93.41 End String = η ת

Voorbeeld 2: functie wcstold () zonder achterliggende tekens

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 93,410 Lange dubbele waarde = 93,41 Einde string =

Een geldige drijvende-kommawaarde voor de functie wcstold () bestaat uit een optioneel + of - teken gevolgd door een van de volgende sets:

  • Voor decimale drijvende-kommawaarde :
    • Een groep decimale cijfers (0-9), eventueel met een decimale punt (.). Bijvoorbeeld: 13.170, -5.63, enz.
    • Een optioneel exponentdeel (e of E) gevolgd door een optioneel + of - teken en een niet-lege reeks decimale cijfers. Bijvoorbeeld: 3.46101e + 007, 13.19e-013, etc.
  • Voor hexadecimale drijvende-kommawaarde :
    • Een tekenreeks die begint met 0x of 0X, gevolgd door een niet-lege reeks hexadecimale cijfers, eventueel met een decimale punt (.). Bijvoorbeeld: 0xfa5, -0xb1f.24, etc.
    • Een optioneel exponentdeel (p of P) gevolgd door een optioneel + of - teken en een niet-lege reeks hexadecimale cijfers. Bijvoorbeeld: 0x51c.23p5, -0x2a.3p-3, etc.
  • Oneindigheid :
    • INF of INFINITY (hoofdlettergebruik negerend). Bijvoorbeeld: -Inf, InfiNiTy, etc.
  • NaN (geen nummer) :
    • NAN- of NAN-reeks (waarbij hoofdletters / kleine letters worden genegeerd) waarbij reeks een reeks tekens is die alleen uit alfanumerieke tekens of het onderstrepingsteken (_) bestaat. Het resultaat is een rustige NaN. Bijvoorbeeld: Nan, NaNab1, etc.

Voorbeeld 3: Hoe werkt wcstold () met exponenten en hexadecimalen?

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 34.901 Æñ Lange Dubbele waarde = 34.901 Eind string = Æñ Brede string = 0Xfc1.a12χr12 Lange Dubbele waarde = 4033.63 End String = χr12

Voorbeeld 4: wcstold gevallen voor INFINITY en 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Wide String = inFinityxΣy Long Dubbele waarde = inf End String = xΣy Wide String = NaN22Щ Long Dubbele waarde = nan End String = 22Щ

Over het algemeen heeft een geldig drijvende-komma-argument voor de functie wcstold () de volgende vorm:

 (witruimte) (- | +) (cijfers) (.cijfers) ((e | E) (- | +) cijfers)

De functie wcstold () negeert alle leidende witruimtetekens totdat het primaire niet-witruimteteken is gevonden.

Vervolgens, uitgaande van dit teken, zijn er zoveel mogelijk tekens nodig die een geldige drijvende-kommawaarde vormen en deze omzetten in een drijvende-kommawaarde. Wat er nog over is van de string na het laatste geldige teken, wordt opgeslagen in het object dat wordt aangeduid met str_end.

Voorbeeld 5: functie wcstold () met voorloopspaties

 #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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 59.013 कॵ Lange dubbele waarde = 59.013 End String = कॵ

Interessante artikelen...