C ++ wcstof () - C ++ Standard Library

De functie wcstof () in C ++ interpreteert de inhoud van een brede string als een drijvende-kommagetal en retourneert de waarde ervan als een float.

Deze functie stelt ook een aanwijzer in om naar het eerste brede teken te wijzen 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.

wcstof () prototype

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

De functie wcstof () 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 drijvende-kommawaarde.

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

wcstof () Retourwaarde

De functie wcstof () geeft als resultaat:

  • een float-waarde (die wordt geconverteerd uit de brede tekenreeks).
  • 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 wcstof () functie werkt?

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

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 40.001∏c12 Float-waarde = 40.001 End String = ∏c12

Voorbeeld 2: wcstof () functie zonder volg karakters

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

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 791,513 Float-waarde = 791,513 End String =

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

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

Wanneer u het programma uitvoert, is de uitvoer:

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

Voorbeeld 4: wcstofgevallen 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; 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; )

Wanneer u het programma uitvoert, is de uitvoer:

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

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

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

De functie wcstof () 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: wcstof () functie 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; 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Brede string = 21,69Ӹaa Float-waarde = 21,69 End String = Ӹaa

Interessante artikelen...