Funkcija wcstod () u C ++-u interpretira sadržaj širokog niza kao broj s pomičnom zarezom i vraća njegovu vrijednost kao dvostruku.
Funkcija wcstod () 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 wcstod ()
dvostruki wcstod (const wchar_t * str, wchar_t ** str_end);
Funkcija wcstod () uzima parametar široki niz i pokazivač na široki znak, interpretira sadržaj širokog niza kao broj s pokretnom zarezom i vraća dvostruku vrijednost.
wcstod () 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č.
wcstod () Povratna vrijednost
Funkcija wcstod () vraća:
- 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 wcstod ()?
#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; )
Kada pokrenete program, izlaz će biti:
Široki niz = 83.201xzҖ ڇ Dvostruka vrijednost = 83.201 Krajnji niz = xzҖ ڇ
Primjer 2: funkcija wcstod () bez pratećih znakova
#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; )
Kada pokrenete program, izlaz će biti:
Široki niz = 83.201 Dvostruka vrijednost = 83.201 Krajnji niz =
Važeća vrijednost s pomičnom zarezom za funkciju wcstod () 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 wcstod () radi s eksponentima i heksadecimalima?
#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; )
Kada pokrenete program, izlaz će biti:
Široki niz = -136.31e-2Endψ Dvostruka vrijednost = -1.3631 Krajnji niz = Krajψ Široki niz = 0x11a.2c ת Dvostruka vrijednost = 282.172 Završni niz = ת
Primjer 4: Slučajevi wcstod 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"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; )
Kada pokrenete program, izlaz će biti:
Široki niz = -inFinityxΣy Dvostruka vrijednost = -inf Krajnji niz = xΣy Široki niz = NaN11Щ Dvostruka vrijednost = nan Krajnji niz = 11Щ
Općenito, valjani argument s pomičnom zarezom za funkciju wcstod () ima sljedeći oblik:
(razmak) (- | +) (znamenke) (. znamenke) ((e | E) (- | +) znamenke)
Funkcija wcstod () 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: funkcija wcstod () s vodećim razmakom
#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; )
Kada pokrenete program, izlaz će biti:
Široki niz = 21,69Ӹaa Dvostruka vrijednost = 21,69 Krajnji niz = Ӹaa