C ++ wcstold () - C ++ standardna biblioteka

Funkcija wcstold () u C ++-u interpretira sadržaj širokog niza kao broj s pomičnom zarezom i vraća njegovu vrijednost kao long double.

Funkcija wcstold () također postavlja pokazivač koji pokazuje na prvi široki znak nakon zadnjeg važećeg znaka širokog niza ako postoji, u suprotnom je pokazivač postavljen na nulu.

Definirano je u datoteci zaglavlja.

prototip wcstold ()

 dugi dvostruki wcstold (const wchar_t * str, wchar_t ** str_end);

Funkcija wcstold () uzima parametar široki niz i pokazivač na široki znak, interpretira sadržaj širokog niza kao broj s pomičnom zarezom i vraća dugu dvostruku vrijednost.

wcstold () parametri

  • str: Široki niz koji predstavlja broj s pomičnim zarezom.
  • str_end: Pokazivač na pokazivač na široki znak. Vrijednost str_end funkcija postavlja na sljedeći znak u str nakon zadnjeg važećeg znaka. Ovaj parametar također može biti null pokazivač.

wcstold () Povratna vrijednost

Funkcija wcstold () vraća:

  • duga dvostruka vrijednost (koja se pretvara iz širokog niza).
  • 0.0 ako se nije mogla izvršiti valjana pretvorba.

Ako je pretvorena vrijednost izvan raspona, pojavljuje se pogreška raspona i vraća se pozitivan ili negativan HUGE_VAL .

Primjer 1: Kako funkcionira funkcija wcstold ()?

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

Kada pokrenete program, izlaz će biti:

 Široki niz = 93.410η ת Duga dvostruka vrijednost = 93.41 Krajnji niz = η ת

Primjer 2: funkcija wcstold () bez pratećih znakova

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

Kada pokrenete program, izlaz će biti:

 Široki niz = 93.410 Dugačka dvostruka vrijednost = 93.41 Krajnji niz =

Važeća vrijednost s pomičnom zarezom za funkciju wcstold () sastoji se od izbornog znaka + ili - iza kojeg slijedi jedan od sljedećih skupova:

  • Za decimalnu vrijednost s pomičnim zarezom :
    • Skupina decimalnih znamenki (0-9), koja po izboru sadrži decimalnu točku (.). Na primjer: 13.170, -5,63 itd.
    • Izborni eksponentni dio (e ili E) nakon kojeg slijedi neobavezni znak + ili - i neprazan slijed decimalnih znamenki. Na primjer: 3,46101e + 007, 13,19e-013 itd.
  • Za heksadecimalnu vrijednost s pomičnim zarezom :
    • Niz koji započinje s 0x ili 0X, nakon čega slijedi neprazan niz heksadecimalnih znamenki, koji po izboru sadrži decimalnu točku (.). Na primjer: 0xfa5, -0xb1f.24 itd.
    • Izborni eksponentni dio (p ili P) nakon kojeg slijedi neobavezni znak + ili - i neprazan niz heksadecimalnih znamenki. Na primjer: 0x51c.23p5, -0x2a.3p-3 itd.
  • Beskonačnost :
    • INF ili INFINITY (zanemarujući slučaj). Na primjer: -Inf, InfiNiTy itd.
  • NaN (nije broj) :
    • NAN ili NAN sekvenca (zanemarujući slučaj) gdje je sekvenca slijed znakova koji se sastoje samo od alfanumeričkih znakova ili donje crte (_). Rezultat je tihi NaN. Na primjer: Nan, NaNab1 itd.

Primjer 3: Kako wcstold () radi s eksponentima i heksadecimalima?

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

Kada pokrenete program, izlaz će biti:

 Široki niz = 34.901Æñ Duga dvostruka vrijednost = 34.901 Krajnji niz = Æñ Široki niz = 0Xfc1.a12χr12 Duga dvostruka vrijednost = 4033.63 Krajnji niz = χr12

Primjer 4: wcstold slučajevi za INFINITY i 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; )

Kada pokrenete program, izlaz će biti:

 Široki niz = inFinityxΣy Long Double vrijednost = inf Krajnji niz = xΣy Široki niz = NaN22Щ Long Double vrijednost = nan Krajnji niz = 22Щ

Općenito, valjani argument s pomičnom zarezom za funkciju wcstold () ima sljedeći oblik:

 (razmak) (- | +) (znamenke) (. znamenke) ((e | E) (- | +) znamenke)

Funkcija wcstold () zanemaruje sve vodeće razmake dok se ne pronađe primarni znak koji nije razmak.

Zatim, počevši od ovog znaka, potrebno je što više znakova koji čine valjanu predstavu s pomičnom zarezom i pretvaraju ih u vrijednost s pomičnom zarezom. Što god je ostalo od niza nakon zadnjeg važećeg znaka, pohranjeno je u objektu na koji pokazuje str_end.

Primjer 5: wcstold () funkcija s vodećim razmakom

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

Kada pokrenete program, izlaz će biti:

 Široki niz = 59.013 कॵ Long Double vrijednost = 59.013 Krajnji niz = कॵ

Zanimljivi članci...