C ++ wcstod () - C ++ standaardbibliotheek

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

De functie wcstod () 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.

wcstod () prototype

 dubbele wcstod (const wchar_t * str, wchar_t ** str_end);

De functie wcstod () 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 dubbele waarde.

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

wcstod () Retourwaarde

De functie wcstod () retourneert:

  • een dubbele waarde (die wordt geconverteerd vanuit 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 wcstod () functie?

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

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 83.201xzҖ ڇ Dubbele waarde = 83.201 End String = xzҖ ڇ

Voorbeeld 2: wcstod () -functie zonder tekens achteraan

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

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 83,201 Dubbele waarde = 83,201 End String =

Een geldige drijvende-kommawaarde voor de functie wcstod () 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 wcstod () met exponenten en hexadecimalen?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"-136.31e-2Endu03c8"; wchar_t str2() = L"0x11a.2cu05ea"; wchar_t *end; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = -136.31e-2Endψ Dubbele waarde = -1.3631 End String = Endψ Brede string = 0x11a.2c ת Dubbele waarde = 282.172 End String = ת

Voorbeeld 4: wcstod 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"NaN11u0429"; wchar_t *end; double value; value = wcstod(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstod(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Wanneer u het programma uitvoert, is de uitvoer:

 Wide String = -inFinityxΣy Dubbele waarde = -inf End String = xΣy Wide String = NaN11Щ Dubbele waarde = nan End String = 11Щ

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

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

De functie wcstod () 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 wcstod () met voorloopspaties

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

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 21,69Ӹaa Dubbele waarde = 21,69 Einde string = Ӹaa

Interessante artikelen...