C ++ wcstod () - C ++ biblioteka standardowa

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

Funkcja wcstod () ustawia również wskaźnik wskazujący na pierwszy szeroki znak po ostatnim prawidłowym znaku szerokiego ciągu, jeśli taki istnieje, w przeciwnym razie wskaźnik jest ustawiany na null.

Jest zdefiniowany w pliku nagłówkowym.

prototyp wcstod ()

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

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

wcstod () 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.

wcstod () Zwracana wartość

Funkcja wcstod () zwraca:

  • podwójna wartość (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 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; )

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

 Szeroki ciąg = 83,201xzҖ ڇ Wartość podwójna = 83,201 Ciąg końcowy = xzҖ ڇ

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

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

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

 Szeroki ciąg = 83,201 Podwójna wartość = 83,201 Ciąg końcowy =

Prawidłowa wartość zmiennoprzecinkowa funkcji wcstod () 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 wcstod () 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"-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; )

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

 Szeroki ciąg = -136,31e-2Koniec ψ Podwójna wartość = -1,3631 Końcowy ciąg = Koniec Szeroki ciąg = 0x11a.2c ת Podwójna wartość = 282,172 Końcowy ciąg = ת

Przykład 4: wcstod Cases for 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; 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; )

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

 Szeroki ciąg = -inFinityxΣy Podwójna wartość = -inf Koniec Ciąg = xΣy Szeroki ciąg = NaN11Щ Podwójna wartość = nan Koniec Ciąg = 11Щ

Ogólnie rzecz biorąc, prawidłowy argument zmiennoprzecinkowy funkcji wcstod () ma następującą postać:

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

Funkcja wcstod () 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 wcstod () 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; 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; )

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

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

Interesujące artykuły...