C ++ wcstof () - C ++ Standardbibliotek

Funktionen wcstof () i C ++ fortolker indholdet af en bred streng som et flydende nummer og returnerer dets værdi som en float.

Denne funktion indstiller også en markør til at pege på det første brede tegn efter det sidste gyldige tegn i den brede streng, hvis der er nogen, ellers er markøren indstillet til null.

Det er defineret i header-fil.

wcstof () prototype

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

Funktionen wcstof () tager bred streng og en markør til bred karakter som parameter, fortolker indholdet af den brede streng som et flydende nummer og returnerer en floatværdi.

wcstof () Parametre

  • str: En bred streng med repræsentation af et flydende nummer.
  • str_end: Markør til en markør til et bredt tegn. Værdien af ​​str_end indstilles af funktionen til det næste tegn i str efter det sidste gyldige tegn. Denne parameter kan også være en nul pointer.

wcstof () Returværdi

Funktionen wcstof () returnerer:

  • en floatværdi (som konverteres fra den brede streng).
  • 0.0 hvis der ikke kunne udføres nogen gyldig konvertering.

Hvis den konverterede værdi er uden for området, opstår der en områdefejl , og en positiv eller negativ HUGE_VAL returneres.

Eksempel 1: Hvordan fungerer wcstof () -funktionen?

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

Når du kører programmet, vil output være:

 Bred streng = 40.001∏c12 Flydeværdi = 40.001 Endestreng = ∏c12

Eksempel 2: funktion wcstof () uden efterfølgende tegn

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

Når du kører programmet, vil output være:

 Bred streng = 791.513 Flydeværdi = 791.513 Afslut streng =

En gyldig floating-point-værdi for wcstof () -funktionen består af et valgfrit + eller - tegn efterfulgt af et af følgende sæt:

  • For decimalværdi med flydende punkt :
    • En gruppe decimalcifre (0-9), der eventuelt indeholder et decimaltegn (.). For eksempel: 13.170, -5.63 osv.
    • En valgfri eksponentdel (e eller E) efterfulgt af et valgfrit + eller - tegn og ikke-tom sekvens af decimaltal. For eksempel: 3.46101e + 007, 13.19e-013 osv.
  • For hexadecimal floating-point-værdi :
    • En streng, der starter med 0x eller 0X, efterfulgt af en ikke-tom sekvens af hexadecimale cifre, der eventuelt indeholder et decimaltegn (.). For eksempel: 0xfa5, -0xb1f.24 osv.
    • En valgfri eksponentdel (p eller P) efterfulgt af et valgfrit + eller - tegn og ikke-tom sekvens af hexadecimale cifre. For eksempel: 0x51c.23p5, -0x2a.3p-3 osv.
  • Uendelighed :
    • INF eller INFINITY (ignorerer tilfælde). For eksempel: -Inf, InfiNiTy osv.
  • NaN (ikke et tal) :
    • NAN- eller NAN-sekvens (ignorering af store og små bogstaver), hvor sekvensen er en sekvens af tegn, der kun består af alfanumeriske tegn eller understregningen (_). Resultatet er et stille NaN. For eksempel: Nan, NaNab1 osv.

Eksempel 3: Hvordan wcstof () fungerer med eksponenter og hexadecimaler?

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

Når du kører programmet, vil output være:

 Bred streng = 39.119e + 2xx ઓ Flydeværdi = 3911,9 Afslut streng = xx ઓ Bred streng = 0Xf1.23cØa1 Flydeværdi = 241,14 Afslut streng = Øa1

Eksempel 4: wcstof-sager for INFINITY og 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; )

Når du kører programmet, vil output være:

 Bred streng = -inFinityxΣy flydeværdi = -inf slutstreng = xΣy bred streng = NaN11Щ flydeværdi = nan slutstreng = 11Щ

Generelt har et gyldigt argument for flydende punkt for wcstof () -funktionen følgende form:

 (mellemrum) (- | +) (cifre) (.cifre) ((e | E) (- | +) cifre)

Funktionen wcstof () ignorerer alle de ledende blanktegn, indtil det primære ikke-hvide mellemrumstegn findes.

Derefter tager det så mange tegn som muligt fra denne karakter, der danner en gyldig repræsentation af flydende punkt og konverterer dem til en flydende punktværdi. Uanset hvad der er tilbage af strengen, efter at det sidste gyldige tegn er gemt i det objekt, der er str_end.

Eksempel 5: funktion wcstof () med ledende mellemrum

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

Når du kører programmet, vil output være:

 Bred streng = 21,69Ӹaa Flydeværdi = 21,69 slutstreng = Ӹaa

Interessante artikler...