C ++ wcstof () - C ++ standartinė biblioteka

Funkcija wcstof () C ++ interpretuoja plačios eilutės turinį kaip slankiojo kablelio skaičių ir grąžina jos vertę kaip plūduriuojančią.

Ši funkcija taip pat nustato rodyklę, kuri nurodo pirmąjį plačią simbolį po paskutinio galiojančio plačios eilutės simbolio, jei toks yra, kitaip žymeklis yra nustatytas į nulį.

Tai apibrėžta antraštės faile.

wcstof () prototipas

 plūdė wcstof (const wchar_t * str, wchar_t ** str_end);

Funkcija wcstof () kaip parametras ima plačią eilutę ir žymeklį iki plataus simbolio, plačios eilutės turinį interpretuoja kaip slankiojo kablelio skaičių ir grąžina plūduriuojančią vertę.

wcstof () parametrai

  • str: plati eilutė, turinti slankiojo kablelio skaičių.
  • str_end: žymeklis plataus pobūdžio simboliui. Str_end reikšmę funkcija nustato kitam simboliui str po paskutinio galiojančio simbolio. Šis parametras taip pat gali būti nulinis rodyklė.

wcstof () Grąžinimo vertė

Funkcija wcstof () grąžinama:

  • plūduriuojanti vertė (kuri konvertuojama iš plačios eilutės).
  • 0.0, jei negalėtų būti atliktas galiojantis konversija.

Jei konvertuota vertė yra už diapazono ribų, įvyksta diapazono klaida ir grąžinama teigiama arba neigiama HUGE_VAL .

1 pavyzdys: Kaip veikia funkcija wcstof ()?

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 40,001∏c12 Plūduriuojanti vertė = 40,001 Pabaigos eilutė = ∏c12

2 pavyzdys: funkcija wcstof () be simbolių

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 791.513 Plūduriuojanti vertė = 791.513 Pabaigos eilutė =

Galiojančią funkcijos wcstof () slankiojo kablelio vertę sudaro pasirenkamas ženklas „+“ arba „-“, po kurio pateikiamas vienas iš šių rinkinių:

  • Dešimtainė slankiojo kablelio vertė :
    • Dešimtainių skaitmenų grupė (0–9), pasirinktinai turinti dešimtainį tašką (.). Pavyzdžiui: 13.170, -5.63 ir kt.
    • Pasirenkama eksponento dalis (e arba E), po kurios pasirenkamas ženklas + arba - ir ne tuščia dešimtainių skaitmenų seka. Pvz .: 3.46101e + 007, 13.19e-013 ir kt.
  • Skaičiuojant šešioliktainę slankiojo kablelio vertę :
    • Eilutė, prasidedanti 0x arba 0X, po kurios pateikiama ne tuščia šešioliktainių skaitmenų seka, pasirinktinai nurodant kablelį (.) Pavyzdžiui: 0xfa5, -0xb1f.24 ir kt.
    • Pasirenkama eksponento dalis (p arba P), po kurios pasirenkamas ženklas „+“ arba „“ ir tuščiadešimtainių skaitmenų tuščia seka. Pavyzdžiui: 0x51c.23p5, -0x2a.3p-3 ir kt.
  • Begalybė :
    • INF arba INFINITY (neatsižvelgiant į atvejį). Pavyzdžiui: -Inf, InfiNiTy ir kt.
  • NaN (ne skaičius) :
    • NAN arba NAN seka (neatsižvelgiant į atvejį), kai seka yra simbolių seka, susidedanti tik iš raidinių ir skaitinių simbolių arba pabraukimo (_). Rezultatas yra tylus NaN. Pavyzdžiui: Nan, NaNab1 ir kt.

3 pavyzdys: Kaip wcstof () veikia su rodikliais ir šešioliktainiais?

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 39.119e + 2xx ઓ Plūduriuojanti vertė = 3911.9 Pabaigos eilutė = xx ઓ Plati eilutė = 0Xf1.23cØa1 Plūduriuojanti vertė = 241.14 Pabaigos eilutė = Øa1

4 pavyzdys: INFINITY ir NaN wcstof atvejai

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = -inFinityxΣy Plūduriuojanti vertė = -inf Pabaigos eilutė = xΣy Plati eilutė = NaN11Щ Plūduriuojanti vertė = nan Pabaigos eilutė = 11Щ

Apskritai, tinkamas „wcstof ()“ funkcijos slankiojo kablelio argumentas yra tokios formos:

 (tarpai) (- | +) (skaitmenys) (. skaitmenys) ((e | E) (- | +) skaitmenys)

Funkcija wcstof () ignoruoja visus pagrindinius tarpų simbolius, kol bus rastas pagrindinis ne tarpų simbolis.

Tada, pradedant nuo šio simbolio, reikia kuo daugiau simbolių, kurie suformuoja galiojantį slankiojo kablelio vaizdą ir paverčia juos slankiojo kablelio verte. Viskas, kas lieka eilutėje po paskutinio galiojančio simbolio, yra saugoma str_end nurodytame objekte.

5 pavyzdys: funkcija wcstof () su priekiniu tarpu

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

Kai paleisite programą, išvestis bus:

 Plati eilutė = 21,69Ӹaa Plūduriuojanti vertė = 21,69 Pabaigos eilutė = Ӹaa

Įdomios straipsniai...