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

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

Funkce wcstold () 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 wcstold ()

 dlouhý dvojitý wcstold (const wchar_t * str, wchar_t ** str_end);

Funkce wcstold () 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í dlouhou dvojitou hodnotu.

Parametry wcstold ()

  • 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.

wcstold () Vrátit hodnotu

Funkce wcstold () vrací:

  • dlouhá dvojitá hodnota (která je převedena ze š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 wcstold ()?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410u03b7u05ea"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 93.410η ת Long Double value = 93.41 End String = η ת

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

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 93,410 Long Double value = 93,41 End String =

Platná hodnota s plovoucí desetinnou čárkou pro funkci wcstold () 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 wcstold () 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"34.901u00c6u00f1"; wchar_t str2() = L"0Xfc1.a12u03c7r12"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 34.901Æñ Long Double value = 34.901 End String = Æñ Wide String = 0Xfc1.a12χr12 Long Double value = 4033.63 End String = χr12

Příklad 4: wcstold případy 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"NaN22u0429"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = inFinityxΣy Long Double value = inf End String = xΣy Wide String = NaN22Щ Long Double value = nan End String = 22Щ

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

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

Funkce wcstold () 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 wcstold () s úvodními mezerami

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 59.013u0915u0975"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 59.013 कॵ Long Double value = 59.013 End String = कॵ

Zajímavé články...