C ++ wcstof () - C ++ standardna biblioteka

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

Ova funkcija također postavlja pokazivač da usmjerava 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 wcstof ()

 plutajuće wcstof (const wchar_t * str, wchar_t ** str_end);

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

wcstof () 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č.

wcstof () Povratna vrijednost

Funkcija wcstof () vraća:

  • plutajuća 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 wcstof () funkcija?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"40.001u220fc12"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kada pokrenete program, izlaz će biti:

 Široki niz = 40.001∏c12 Vrijednost plutanja = 40.001 Krajnji niz = ∏c12

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"791.513"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kada pokrenete program, izlaz će biti:

 Široki niz = 791.513 Vrijednost plutanja = 791.513 Krajnji niz =

Važeća vrijednost s pomičnom zarezom za funkciju wcstof () 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 wcstof () radi s eksponentima i heksadecimalima?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"39.119e+2xxu0a93"; wchar_t str2() = L"0Xf1.23cu00d8a1"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kada pokrenete program, izlaz će biti:

 Široki niz = 39.119e + 2xx value Vrijednost plutajućeg = 3911.9 Krajnji niz = xx ઓ Široki niz = 0Xf1.23cØa1 Vrijednost plutajućeg podatka = 241.14 Krajnji niz = Øa1

Primjer 4: wcstof 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"NaN11u0429"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kada pokrenete program, izlaz će biti:

 Široki niz = -inFinityxΣy Vrijednost plutajućeg = -inf Krajnji niz = xΣy Široki niz = NaN11Щ Vrijednost plutajućeg = nan Krajnji niz = 11Щ

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

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

Funkcija wcstof () 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 wcstof () 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; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Kada pokrenete program, izlaz će biti:

 Široki niz = 21,69Ӹaa Vrijednost plovka = 21,69 Krajnji niz = Ӹaa

Zanimljivi članci...