C ++ wcstold () - C ++ standarta bibliotēka

Funkcija wcstold () C ++ interpretē plašas virknes saturu kā peldošā komata skaitli un atgriež tās vērtību kā garu dubultu.

Funkcija wcstold () arī iestata rādītāju, kas norāda uz pirmo plato rakstzīmi pēc pēdējās derīgās rakstzīmes, ja tādas ir, pretējā gadījumā rādītājs tiek iestatīts uz nulli.

Tas ir definēts galvenes failā.

wcstold () prototips

 garš dubultā wcstold (const wchar_t * str, wchar_t ** str_end);

Funkcija wcstold () kā parametrs ņem plašu virkni un rādītāju uz plašu rakstzīmi, plašās virknes saturu interpretē kā peldošā komata skaitli un atgriež garu dubultvērtību.

wcstold () parametri

  • str: plaša virkne, kurā attēlots peldošā komata skaitlis.
  • str_end: Rādītājs uz plaša rakstura rādītāju. Str_end vērtību funkcija iestata nākamajai rakstzīmei str pēc pēdējās derīgās rakstzīmes. Šis parametrs var būt arī nulles rādītājs.

wcstold () Atgriešanās vērtība

Funkcija wcstold () atgriež:

  • gara dubultvērtība (kas tiek konvertēta no platās virknes).
  • 0.0, ja nevarēja veikt derīgu konversiju.

Ja konvertētā vērtība ir ārpus diapazona, rodas diapazona kļūda un tiek atgriezta pozitīva vai negatīva HUGE_VAL .

1. piemērs: Kā darbojas wcstold () funkcija?

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

Palaidot programmu, izeja būs:

 Platā virkne = 93,410η ת Garā dubultā vērtība = 93,41 Beigas virkne = η ת

2. piemērs: funkcija wcstold () bez rakstzīmēm

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

Palaidot programmu, izeja būs:

 Platā virkne = 93,410 Garā dubultā vērtība = 93,41 Beigas virkne =

Derīga wcstold () funkcijas peldošā komata vērtība sastāv no izvēles zīmes + vai -, kam seko viena no šīm kopām:

  • Decimāldaļas peldošā komata vērtībai :
    • Decimālzīmju grupa (0–9), pēc izvēles saturot decimālzīmi (.). Piemēram: 13.170, -5.63 utt.
    • Neobligāta eksponenta daļa (e vai E), kam seko papildu + vai - zīme un tukša decimālzīmju secība. Piemēram: 3.46101e + 007, 13.19e-013 utt.
  • Heksadecimālai peldošā komata vērtībai :
    • Virkne, kas sākas ar 0x vai 0X, kam seko tukša heksadecimālo ciparu secība, pēc izvēles saturot decimāldaļu (.). Piemēram: 0xfa5, -0xb1f.24 utt.
    • Neobligāta eksponenta daļa (p vai P), kam seko papildu + vai - zīme un tukša heksadecimālo ciparu secība. Piemēram: 0x51c.23p5, -0x2a.3p-3 utt.
  • Bezgalība :
    • INF vai INFINITY (ignorējot gadījumu). Piemēram: -Inf, InfiNiTy utt.
  • NaN (nav skaitlis) :
    • NAN vai NAN secība (ignorējot reģistru), kur secība ir rakstzīmju secība, kas sastāv tikai no burtciparu rakstzīmēm vai pasvītrojuma (_). Rezultāts ir kluss NaN. Piemēram: Nan, NaNab1 utt.

3. piemērs: Kā wcstold () darbojas ar eksponentiem un heksadecimāliem?

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

Palaidot programmu, izeja būs:

 Platā virkne = 34.901Æñ Garā dubultā vērtība = 34.901 Beigas virkne = Æñ Plašā virkne = 0Xfc1.a12χr12 Garā dubultā vērtība = 4033.63 Beigas virkne = χr12

4. piemērs: wcstold gadījumi INFINITY un 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; )

Palaidot programmu, izeja būs:

 Platā virkne = inFinityxΣy Garā dubultvērtība = inf Beigas virkne = xΣy Plašā virkne = NaN22Щ Garā dubultā vērtība = nan End virkne = 22Щ

Parasti derīgam peldošā komata argumentam funkcijai wcstold () ir šāda forma:

 (atstarpe) (- | +) (cipari) (. cipari) ((e | E) (- | +) cipari)

Funkcija wcstold () ignorē visas vadošās atstarpes rakstzīmes, līdz tiek atrasts primārais raksturs, kas nav atstarpes.

Tad, sākot ar šo rakstzīmi, ir nepieciešams pēc iespējas vairāk rakstzīmju, kas veido derīgu peldošā komata attēlojumu un pārvērš tos par peldošā komata vērtību. Tas, kas paliek pāri no virknes pēc pēdējās derīgās rakstzīmes, tiek saglabāts str_end norādītajā objektā.

5. piemērs: funkcija wcstold () ar vadošo atstarpi

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

Palaidot programmu, izeja būs:

 Platā virkne = 59.013 कॵ Garā dubultā vērtība = 59.013 Beigas virkne = कॵ

Interesanti raksti...