C ++ wcstof () - C ++ Standardbibliotek

Funksjonen wcstof () i C ++ tolker innholdet i en bred streng som et flytende nummer og returnerer verdien som en flottør.

Denne funksjonen setter også en peker for å peke på det første brede tegnet etter det siste gyldige tegnet i bredstrengen hvis det er noen, ellers er pekeren satt til null.

Det er definert i topptekstfilen.

wcstof () prototype

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

Funksjonen wcstof () tar bred streng og en peker til bred karakter som parameter, tolker innholdet i den brede strengen som et flytende nummer og returnerer en flyteverdi.

wcstof () Parametere

  • str: En bred streng som representerer et flytende nummer.
  • str_end: Peker til en peker til et bredt tegn. Verdien av str_end er satt av funksjonen til neste tegn i str etter det siste gyldige tegnet. Denne parameteren kan også være en nullpeker.

wcstof () Returverdi

Funksjonen wcstof () returnerer:

  • en flyteverdi (som konverteres fra den brede strengen).
  • 0.0 hvis ingen gyldig konvertering kunne utføres.

Hvis den konverterte verdien er utenfor området, oppstår en områdefeil og en positiv eller negativ HUGE_VAL returneres.

Eksempel 1: Hvordan fungerer wcstof () -funksjonen?

 #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 kjører programmet, vil utdataene være:

 Bred streng = 40,001∏c12 Flytverdi = 40,001 sluttstreng = ∏c12

Eksempel 2: wcstof () -funksjon uten etterfø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 kjører programmet, vil utdataene være:

 Bred streng = 791.513 Flytverdi = 791.513 Sluttstreng =

En gyldig flytende verdi for wcstof () -funksjonen består av et valgfritt + eller - tegn etterfulgt av ett av følgende sett:

  • For desimalverdi med flytende punkt :
    • En gruppe desimaltegn (0-9), som eventuelt inneholder et desimaltegn (.). For eksempel: 13.170, -5.63, etc.
    • En valgfri eksponentdel (e eller E) etterfulgt av et valgfritt + eller - tegn og ikke-tom sekvens med desimaltegn. For eksempel: 3.46101e + 007, 13.19e-013, etc.
  • For heksadesimal flytende verdi :
    • En streng som begynner med 0x eller 0X, etterfulgt av en ikke-tom sekvens av heksadesimale sifre, som eventuelt inneholder et desimaltegn (.). For eksempel: 0xfa5, -0xb1f.24, etc.
    • En valgfri eksponentdel (p eller P) etterfulgt av et valgfritt + eller - tegn og en ikke-sekvens med heksadesimale sifre. For eksempel: 0x51c.23p5, -0x2a.3p-3, etc.
  • Uendelig :
    • INF eller INFINITY (ignorerer sak). For eksempel: -Inf, InfiNiTy, etc.
  • NaN (ikke et tall) :
    • NAN- eller NAN-sekvens (ignorerer store og små bokstaver) der sekvensen er en sekvens av tegn som bare består av alfanumeriske tegn eller understrekningen (_). Resultatet er et stille NaN. For eksempel: Nan, NaNab1, etc.

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

 #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 kjører programmet, vil utdataene være:

 Bred streng = 39.119e + 2xx ઓ Flytverdi = 3911,9 Sluttstreng = xx ઓ Bred streng = 0Xf1.23cØa1 Flytverdi = 241,14 Sluttstreng = Øa1

Eksempel 4: wcstof-saker 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 kjører programmet, vil utdataene være:

 Bred streng = -inFinityxΣy flytverdi = -inf sluttstreng = xΣy bred streng = NaN11Щ flytverdi = nan sluttstreng = 11Щ

Generelt har et gyldig argument for flytende punkt for wcstof () -funksjonen følgende form:

 (mellomrom) (- | +) (sifre) (. sifre) ((e | E) (- | +) sifre)

Funksjonen wcstof () ignorerer alle de ledende blanktegnene til det primære ikke-hvite mellomromstegnet er funnet.

Fra dette tegnet tar det så mange tegn som mulig som danner en gyldig flytende representasjon og konverterer dem til en flytende verdi. Uansett hva som er igjen av strengen etter at det siste gyldige tegnet er lagret i objektet pekt av str_end.

Eksempel 5: wcstof () -funksjon med ledende mellomrom

 #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 kjører programmet, vil utdataene være:

 Bred streng = 21,69Ӹaa Flytverdi = 21,69 sluttstreng = Ӹaa

Interessante artikler...