C ++ wcstod () - C ++ Standardbibliotek

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

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

Det er defineret i header-fil.

wcstod () prototype

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

Funktionen wcstod () 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 dobbelt værdi.

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

wcstod () Returværdi

Funktionen wcstod () returnerer:

  • en dobbelt væ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 wcstod () -funktionen?

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

 Bred streng = 83.201xzҖ ڇ Dobbelt værdi = 83.201 Afslut streng = xzҖ ڇ

Eksempel 2: wcstod () -funktion uden efterfø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 kører programmet, vil output være:

 Bred streng = 83.201 Dobbeltværdi = 83.201 Afslut streng =

En gyldig værdi for flydende punkt for wcstod () -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 wcstod () fungerer med eksponenter og hexadecimaler?

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

 Wide String = -136.31e-2Endψ Dobbeltværdi = -1.3631 End String = Endψ Wide String = 0x11a.2c ת Double value = 282.172 End Streng = ת

Eksempel 4: wcstod-sager til 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 kører programmet, vil output være:

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

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

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

Funktionen wcstod () ignorerer alle de førende 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: wcstod () -funktion 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; 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 kører programmet, vil output være:

 Bred streng = 21,69Ӹaa Dobbelt værdi = 21,69 slutstreng = Ӹaa

Interessante artikler...