C ++ wcstof () - C ++ szabványos könyvtár

A wcstof () függvény a C ++ nyelven egy széles karakterlánc tartalmát lebegőpontos számként értelmezi, és értékét lebegőként adja vissza.

Ez a függvény egy olyan mutatót is beállít, amely a széles karakterlánc utolsó érvényes karaktere után az első széles karakterre mutat, ha van ilyen, különben a mutató nullára van állítva.

A fejlécfájlban van meghatározva.

wcstof () prototípus

 float wcstof (const wchar_t * str, wchar_t ** str_end);

A wcstof () függvény paraméterként széles karakterláncot és széles karakterre mutató mutatót vesz fel, a széles karakterlánc tartalmát lebegőpontos számként értelmezi, és lebegőértéket ad vissza.

wcstof () Paraméterek

  • str: széles karakterlánc, amely lebegőpontos számot képvisel.
  • str_end: Mutató egy széles karakterre mutató mutatóra. Az str_end értékét a függvény a következő karakterre állítja az str-ben az utolsó érvényes karakter után. Ez a paraméter lehet egy null mutató is.

wcstof () Visszatérési érték

A wcstof () függvény visszatér:

  • float érték (amelyet a széles karakterláncból alakítunk át).
  • 0.0, ha nem lehet érvényes konverziót végrehajtani.

Ha az átalakított érték kívül esik a tartományon, akkor tartományi hiba lép fel, és pozitív vagy negatív HUGE_VAL értéket ad vissza.

1. példa: Hogyan működik a wcstof () függvény?

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

A program futtatásakor a kimenet a következő lesz:

 Széles karakterlánc = 40,001∏c12 Úszóérték = 40,001 Végső karakterlánc = ∏c12

2. példa: wcstof () függvény karakterek nélkül

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

A program futtatásakor a kimenet a következő lesz:

 Széles karakterlánc = 791.513 Úszó érték = 791.513 Végső karakterlánc =

A wcstof () függvény érvényes lebegőpontos értéke egy opcionális + vagy - előjelből áll, amelyet a következő halmazok valamelyike ​​követ:

  • Tízes lebegőpontos érték esetén :
    • Tizedesjegyek csoportja (0–9), amely adott esetben tartalmaz egy tizedespontot (.). Például: 13.170, -5.63 stb.
    • Választható kitevőrész (e vagy E), amelyet egy opcionális + vagy - jel követ, és a decimális számjegyek nem üres sorozata. Például: 3,46101e + 007, 13,19e-013 stb.
  • Hexadecimális lebegőpontos érték esetén :
    • 0x vagy 0X kezdetű karakterlánc, amelyet a hexadecimális számjegyek nem üres szekvenciája követ, amely adott esetben tizedespontot (.) Tartalmaz. Például: 0xfa5, -0xb1f.24 stb.
    • Opcionális kitevőrész (p vagy P), amelyet opcionális + vagy - jel követ, és a hexadecimális számjegyek nem üres sorozata. Például: 0x51c.23p5, -0x2a.3p-3 stb.
  • Végtelen :
    • INF vagy VÉGTELEN (figyelmen kívül hagyva az esetet). Például: -Inf, InfiNiTy stb.
  • NaN (nem szám) :
    • NAN vagy NAN szekvencia (az eseteket figyelmen kívül hagyva), ahol a szekvencia csak alfanumerikus karakterekből vagy aláhúzásból (_) álló karakterek szekvenciája. Például: Nan, NaNab1 stb.

3. példa: Hogyan működik a wcstof () exponensekkel és hexadecimálisokkal?

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

A program futtatásakor a kimenet a következő lesz:

 Széles karakterlánc = 39.119e + 2xx ઓ Úszóérték = 3911.9 Végső karakterlánc = xx ઓ Széles karakterlánc = 0Xf1.23cØa1 Úszóérték = 241.14 Végső karakterlánc = Øa1

4. példa: wcstof esetek INFINITY és NaN esetén

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

A program futtatásakor a kimenet a következő lesz:

 Széles karakterlánc = -inFinityxΣy Úszóérték = -inf Végső karakterlánc = xΣy Széles karakterlánc = NaN11Щ Úszóérték = nan Végső karakterlánc = 11Щ

Általában a wcstof () függvény érvényes lebegőpontos argumentuma a következő formában van:

 (fehér szóköz) (- | +) (számjegy) (. számjegy) ((e | E) (- | +) számjegy)

A wcstof () függvény mindaddig figyelmen kívül hagyja az összes vezető szóközt, amíg az elsődleges nem fehér szóköz megtalálható.

Ezután, ebből a karakterből kiindulva, a lehető legtöbb karakterre van szükség, amely érvényes lebegőpontos ábrázolást alkot, és lebegőpontos értékgé alakítja őket. Bármi, ami az utolsó érvényes karakter után maradt a karakterláncból, az str_end által jelzett objektumban tárolódik.

5. példa: wcstof () függvény vezető szóközzel

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

A program futtatásakor a kimenet a következő lesz:

 Széles karakterlánc = 21,69Ӹaa Úszóérték = 21,69 Végső karakterlánc = Ӹaa

érdekes cikkek...