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

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

A wcstod () függvény egy 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.

wcstod () prototípus

 kettős wcstod (const wchar_t * str, wchar_t ** str_end);

A wcstod () 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 kettős értéket ad vissza.

wcstod () 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.

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

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

  • kettős é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 wcstod () függvény?

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

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

 Széles karakterlánc = 83.201xzҖ ڇ Dupla érték = 83.201 End String = xzҖ ڇ

2. példa: wcstod () 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"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; ) 

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

 Széles karakterlánc = 83,20 Dupla érték = 83,20 végső karakterlánc =

A wcstod () függvény érvényes lebegőpontos értéke egy opcionális + vagy - előjelből áll, amelyet a következő halmazok egyike 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 wcstod () exponensekkel és hexadecimálisokkal?

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

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

 Széles karakterlánc = -136,31e-2Endψ Dupla érték = -1.3631 Vége string = Endψ Széles karakterlánc = 0x11a.2c ת Dupla érték = 282.172 Vég karakterlánc = ת

4. példa: wcstod esetek az INFINITY és a NaN esetében

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

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

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

Általánosságban elmondható, hogy a wcstod () 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 wcstod () 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: wcstod () 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; 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; )

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

 Széles karakterlánc = 21,69Ӹaa Dupla érték = 21,69 Vége karakterlánc = Ӹaa

érdekes cikkek...