C ++ wcstod () - C ++ Standardbibliotek

Funksjonen wcstod () i C ++ tolker innholdet i en bred streng som et flytende nummer og returnerer verdien som en dobbel.

Funksjonen wcstod () setter også en peker til å 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.

wcstod () prototype

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

Wcstod () -funksjonen tar bred streng og en peker til bred karakter som parameter, tolker innholdet i bred streng som et flytende nummer og returnerer en dobbel verdi.

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

wcstod () Returverdi

Funksjonen wcstod () returnerer:

  • en dobbel verdi (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 wcstod () -funksjonen?

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

Når du kjører programmet, vil utdataene være:

 Bred streng = 83.201xzҖ ڇ Dobbel verdi = 83.201 Sluttstreng = xzҖ ڇ

Eksempel 2: wcstod () -funksjon uten etterfølgende tegn

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

Når du kjører programmet, vil utdataene være:

 Bred streng = 83.201 Dobbel verdi = 83.201 Slutt streng =

En gyldig flytende verdi for wcstod () -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 wcstod () fungerer med eksponenter og heksadesimale tall?

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

Når du kjører programmet, vil utdataene være:

 Bred streng = -136.31e-2Endψ Dobbel verdi = -1.3631 Sluttstreng = Sluttψ Bred streng = 0x11a.2c ת Dobbel verdi = 282.172 Sluttstreng = ת

Eksempel 4: wcstod-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; 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; )

Når du kjører programmet, vil utdataene være:

 Bred streng = -inFinityxΣy Dobbel verdi = -inf sluttstreng = xΣy bred streng = NaN11N Dobbel verdi = nan sluttstreng = 11Щ

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

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

Funksjonen wcstod () ignorerer alle de ledende mellomromstegnene 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: wcstod () -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; 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; )

Når du kjører programmet, vil utdataene være:

 Bred streng = 21,69Ӹaa Dobbel verdi = 21,69 sluttstreng = Ӹaa

Interessante artikler...