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