C ++ wcstold () - C ++ Standardbibliotek

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

Funksjonen wcstold () setter også en peker til å peke på det første brede tegnet etter det siste gyldige tegnet i den brede strengen hvis det er noen, ellers er pekeren satt til null.

Det er definert i topptekstfilen.

wcstold () prototype

 lang dobbel wcstold (const wchar_t * str, wchar_t ** str_end);

Funksjonen wcstold () tar bred streng og en peker til bred karakter som parameter, tolker innholdet i bred streng som et flytende nummer og returnerer en lang dobbel verdi.

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

wcstold () Returverdi

Funksjonen wcstold () returnerer:

  • en lang 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 wcstold () -funksjonen?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410u03b7u05ea"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Bred streng = 93.410η ת Lang dobbel verdi = 93.41 sluttstreng = η ת

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Bred streng = 93.410 Lang dobbel verdi = 93.41 Sluttstreng =

En gyldig flytepunktverdi for wcstold () -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 wcstold () 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"34.901u00c6u00f1"; wchar_t str2() = L"0Xfc1.a12u03c7r12"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Bred streng = 34,901Æñ Lang dobbel verdi = 34,901 sluttstreng = Æñ bred streng = 0Xfc1.a12χr12 lang dobbel verdi = 4033,63 sluttstreng = χr12

Eksempel 4: wcstold 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"NaN22u0429"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long 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 lang dobbel verdi = inf slutt streng = xΣy bred streng = NaN22Щ lang dobbel verdi = nan slutt streng = 22Щ

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

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

Funksjonen wcstold () 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: wcstold () -funksjon med ledende mellomrom

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 59.013u0915u0975"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Bred streng = 59,013 कॵ Lang dobbel verdi = 59,013 Slutt streng = कॵ

Interessante artikler...