C ++ wcstof () - C ++ biblioteka standardowa

Funkcja wcstof () w C ++ interpretuje zawartość szerokiego łańcucha jako liczbę zmiennoprzecinkową i zwraca jej wartość jako liczbę zmiennoprzecinkową.

Ta funkcja ustawia również wskaźnik tak, aby wskazywał na pierwszy szeroki znak po ostatnim prawidłowym znaku szerokiego ciągu, jeśli taki istnieje, w przeciwnym razie wskaźnik jest ustawiony na null.

Jest zdefiniowany w pliku nagłówkowym.

prototyp wcstof ()

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

Funkcja wcstof () jako parametr przyjmuje szeroki łańcuch i wskaźnik do szerokiego znaku, interpretuje zawartość szerokiego ciągu jako liczbę zmiennoprzecinkową i zwraca wartość zmiennoprzecinkową.

wcstof () Parametry

  • str: Szeroki łańcuch mający reprezentację liczby zmiennoprzecinkowej.
  • str_end: wskaźnik do wskaźnika do szerokiego znaku. Wartość str_end jest ustawiana przez funkcję na następny znak w str po ostatnim prawidłowym znaku. Ten parametr może być również wskaźnikiem zerowym.

wcstof () Zwracana wartość

Funkcja wcstof () zwraca:

  • wartość zmiennoprzecinkowa (która jest konwertowana z szerokiego ciągu).
  • 0.0, jeśli nie można przeprowadzić żadnej prawidłowej konwersji.

Jeśli przekonwertowana wartość jest poza zakresem, występuje błąd zakresu i zwracany jest dodatni lub ujemny HUGE_VAL .

Przykład 1: Jak działa funkcja 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; )

Po uruchomieniu programu wynik będzie następujący:

 Szeroki ciąg = 40.001∏c12 Wartość zmiennoprzecinkowa = 40.001 Ciąg końcowy = ∏c12

Przykład 2: funkcja wcstof () bez znaków końcowych

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

Po uruchomieniu programu wynik będzie następujący:

 Szeroki ciąg = 791,513 Wartość zmiennoprzecinkowa = 791,513 Ciąg końcowy =

Prawidłowa wartość zmiennoprzecinkowa funkcji wcstof () składa się z opcjonalnego znaku + lub -, po którym następuje jeden z następujących zestawów:

  • Dla dziesiętnej wartości zmiennoprzecinkowej :
    • Grupa cyfr dziesiętnych (0–9), opcjonalnie zawierająca kropkę dziesiętną (.). Na przykład: 13,170, -5,63 itd.
    • Opcjonalna część wykładnika (e lub E), po której następuje opcjonalny znak + lub - oraz niepusta sekwencja cyfr dziesiętnych. Na przykład: 3.46101e + 007, 13.19e-013 itd.
  • Dla szesnastkowej wartości zmiennoprzecinkowej :
    • Ciąg zaczynający się od 0x lub 0X, po którym następuje niepusta sekwencja cyfr szesnastkowych, opcjonalnie zawierająca kropkę dziesiętną (.). Na przykład: 0xfa5, -0xb1f.24 itd.
    • Opcjonalna część wykładnika (p lub P), po której następuje opcjonalny znak + lub - oraz niepusta sekwencja cyfr szesnastkowych. Na przykład: 0x51c.23p5, -0x2a.3p-3 itd.
  • Nieskończoność :
    • INF lub INFINITY (ignorując wielkość liter). Na przykład: -Inf, InfiNiTy itp.
  • NaN (nie liczba) :
    • Sekwencja NAN lub NAN (pomijając wielkość liter), gdzie sekwencja to sekwencja znaków składająca się wyłącznie ze znaków alfanumerycznych lub podkreślenia (_). Wynikiem jest cichy NaN. Na przykład: Nan, NaNab1 itp.

Przykład 3: Jak wcstof () działa z wykładnikami i liczbami szesnastkowymi?

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

Po uruchomieniu programu wynik będzie następujący:

 Szeroki ciąg = 39,119e + 2xx ઓ Wartość zmiennoprzecinkowa = 3911,9 Ciąg końcowy = xx ઓ Szeroki ciąg = 0Xf1,23cØa1 Wartość zmiennoprzecinkowa = 241,14 Ciąg końcowy = Řa1

Przykład 4: wcstof przypadki dla INFINITY i 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; )

Po uruchomieniu programu wynik będzie następujący:

 Szeroki ciąg = -inFinityxΣy Wartość zmiennoprzecinkowa = -inf Ciąg końcowy = xΣy Ciąg szeroki = NaN11Щ Wartość zmiennoprzecinkowa = nan Ciąg końcowy = 11Щ

Ogólnie rzecz biorąc, poprawny argument zmiennoprzecinkowy funkcji wcstof () ma następującą postać:

 (białe znaki) (- | +) (cyfry) (.digits) ((e | E) (- | +) cyfry)

Funkcja wcstof () ignoruje wszystkie wiodące białe znaki, dopóki nie zostanie znaleziony główny znak niebędący białymi znakami.

Następnie, zaczynając od tego znaku, przyjmuje jak najwięcej znaków, które tworzą prawidłową reprezentację zmiennoprzecinkową i konwertują je na wartość zmiennoprzecinkową. Cokolwiek pozostało z ciągu po ostatnim prawidłowym znaku, jest przechowywane w obiekcie wskazywanym przez str_end.

Przykład 5: funkcja wcstof () z wiodącymi białymi znakami

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

Po uruchomieniu programu wynik będzie następujący:

 Szeroki ciąg = 21,69Ӹaa Wartość zmiennoprzecinkowa = 21,69 Ciąg końcowy = Ӹaa

Interesujące artykuły...