C ++ wcstod () - standardní knihovna C ++

Funkce wcstod () v C ++ interpretuje obsah širokého řetězce jako číslo s plovoucí desetinnou čárkou a vrátí jeho hodnotu jako dvojitý.

Funkce wcstod () také nastaví ukazatel tak, aby ukazoval na první široký znak za posledním platným znakem širokého řetězce, pokud existuje, jinak je ukazatel nastaven na null.

Je definován v hlavičkovém souboru.

prototyp wcstod ()

 double wcstod (const wchar_t * str, wchar_t ** str_end);

Funkce wcstod () přebírá jako svůj parametr široký řetězec a ukazatel na široký znak, interpretuje obsah širokého řetězce jako číslo s plovoucí desetinnou čárkou a vrací dvojitou hodnotu.

Parametry wcstod ()

  • str: Široký řetězec mající zastoupení čísla s plovoucí desetinnou čárkou.
  • str_end: Ukazatel na ukazatel na široký znak. Hodnota str_end je funkcí nastavena na další znak v str za posledním platným znakem. Tento parametr může být také nulovým ukazatelem.

wcstod () Návratová hodnota

Funkce wcstod () vrací:

  • dvojitá hodnota (která je převedena z širokého řetězce).
  • 0,0, pokud nelze provést platný převod.

Pokud je převedená hodnota mimo rozsah, dojde k chybě rozsahu a bude vrácena kladná nebo záporná hodnota HUGE_VAL .

Příklad 1: Jak funguje funkce wcstod ()?

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

Když spustíte program, výstup bude:

 Wide String = 83.201xzҖ ڇ Double value = 83.201 End String = xzҖ ڇ

Příklad 2: Funkce wcstod () bez koncových znaků

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

Když spustíte program, výstup bude:

 Wide String = 83.201 Double value = 83.201 End String =

Platná hodnota s plovoucí desetinnou čárkou pro funkci wcstod () se skládá z volitelného znaménka + nebo - následovaného jednou z následujících sad:

  • Pro desetinnou hodnotu s plovoucí desetinnou čárkou :
    • Skupina desetinných míst (0-9), volitelně obsahující desetinnou čárku (.). Například: 13.170, -5.63 atd.
    • Volitelná exponentová část (e nebo E) následovaná volitelným znaménkem + nebo - a neprázdnou posloupností desetinných míst. Například: 3.46101e + 007, 13.19e-013 atd.
  • Pro hexadecimální hodnotu s plovoucí desetinnou čárkou :
    • Řetězec začínající 0x nebo 0X, následovaný neprázdnou posloupností šestnáctkových číslic, volitelně obsahující desetinnou čárku (.). Například: 0xfa5, -0xb1f.24 atd.
    • Volitelná exponentová část (p nebo P) následovaná volitelným znaménkem + nebo - a neprázdnou posloupností hexadecimálních číslic. Například: 0x51c.23p5, -0x2a.3p-3 atd.
  • Nekonečno :
    • INF nebo INFINITY (ignorování malých a velkých písmen). Například: -Inf, InfiNiTy atd.
  • NaN (není číslo) :
    • Sekvence NAN nebo NAN (ignorování malých a velkých písmen), kde sekvence je sekvence znaků skládající se pouze z alfanumerických znaků nebo podtržítka (_). Výsledkem je tichý NaN. Například: Nan, NaNab1 atd.

Příklad 3: Jak wcstod () pracuje s exponenty a hexadecimálními čísly?

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

Když spustíte program, výstup bude:

 Wide String = -136,31e-2Endψ Double value = -1,3631 End String = Endψ Wide String = 0x11a.2c ת Double value = 282,172 End String = ת

Příklad 4: Případy wcstod pro INFINITY a 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; 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; )

Když spustíte program, výstup bude:

 Wide String = -inFinityxΣy Double value = -inf End String = xΣy Wide String = NaN11Щ Double value = nan End String = 11Щ

Platný argument s plovoucí desetinnou čárkou pro funkci wcstod () má obecně následující formu:

 (mezery) (- | +) (číslice) (. číslice) ((e | E) (- | +) číslice)

Funkce wcstod () ignoruje všechny úvodní prázdné znaky, dokud není nalezen primární znak bez mezer.

Poté, počínaje tímto znakem, trvá co nejvíce znaků, které tvoří platnou reprezentaci s plovoucí desetinnou čárkou a převádí je na hodnotu s plovoucí desetinnou čárkou. Cokoli, co zbylo z řetězce po posledním platném znaku, je uloženo v objektu, na který ukazuje str_end.

Příklad 5: Funkce wcstod () s úvodními mezerami

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

Když spustíte program, výstup bude:

 Široký řetězec = 21,69Ӹaa Dvojitá hodnota = 21,69 Koncový řetězec = Ӹaa

Zajímavé články...