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

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

Tato funkce 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 wcstof ()

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

Funkce wcstof () vezme 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 vrátí plovoucí hodnotu.

Parametry wcstof ()

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

wcstof () Návratová hodnota

Funkce wcstof () vrací:

  • float value (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 wcstof ()?

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

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

 Široký řetězec = 40,001∏c12 Plovoucí hodnota = 40,001 Koncový řetězec = 12c12

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

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

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

 Široký řetězec = 791,513 Plovoucí hodnota = 791,513 Koncový řetězec =

Platná hodnota s plovoucí desetinnou čárkou pro funkci wcstof () 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 wcstof () 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"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; )

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

 Wide String = 39.119e + 2xx ઓ Float value = 3911.9 End String = xx ઓ Wide String = 0Xf1.23cØa1 Float value = 241.14 End String = Øa1

Příklad 4: wcstof 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"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; )

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

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

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

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

Funkce wcstof () 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 wcstof () 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; 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; )

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

 Široký řetězec = 21,69Ӹaa Plovoucí hodnota = 21,69 Koncový řetězec = Ӹaa

Zajímavé články...