C ++ wcstod () - C ++ Standart Kitaplığı

C ++ 'daki wcstod () işlevi, geniş bir dizenin içeriğini kayan nokta sayısı olarak yorumlar ve değerini double olarak döndürür.

Wcstod () işlevi, eğer varsa geniş dizgenin son geçerli karakterinden sonraki ilk geniş karaktere işaret edecek bir gösterici ayarlar, aksi takdirde işaretçi boş değerine ayarlanır.

Başlık dosyasında tanımlanmıştır.

wcstod () prototipi

 çift ​​wcstod (const wchar_t * str, wchar_t ** str_end);

Wcstod () işlevi, parametresi olarak geniş dizeyi ve geniş karaktere bir gösterici alır, geniş dizenin içeriğini bir kayan nokta sayısı olarak yorumlar ve bir çift değer döndürür.

wcstod () Parametreler

  • str: Bir kayan nokta sayısının gösterimine sahip geniş bir dize.
  • str_end: Geniş bir karaktere işaretçi. Str_end değeri, işlev tarafından son geçerli karakterden sonra str'deki bir sonraki karaktere ayarlanır. Bu parametre aynı zamanda bir boş gösterici olabilir.

wcstod () Dönüş değeri

Wcstod () işlevi şunu döndürür:

  • çift ​​değer (geniş dizeden dönüştürülür).
  • Geçerli dönüştürme yapılamazsa 0.0.

Dönüştürülen değer aralık dışındaysa, bir aralık hatası oluşur ve pozitif veya negatif HUGE_VAL döndürülür.

Örnek 1: wcstod () işlevi nasıl çalışır?

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

Programı çalıştırdığınızda, çıktı:

 Geniş String = 83.201xzҖ ڇ Double value = 83.201 End String = xzҖ ڇ

Örnek 2: Sonda karakterler olmadan wcstod () işlevi

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

Programı çalıştırdığınızda, çıktı:

 Geniş Dize = 83.201 Çift değer = 83.201 Bitiş Dize =

Wcstod () işlevi için geçerli bir kayan nokta değeri, isteğe bağlı bir + veya - işaretinin ardından aşağıdaki kümelerden birini içerir:

  • Ondalık kayan nokta değeri için :
    • İsteğe bağlı olarak bir ondalık nokta (.) İçeren bir ondalık sayı grubu (0-9). Örneğin: 13.170, -5.63, vb.
    • İsteğe bağlı üslü kısım (e veya E) ve ardından isteğe bağlı + veya - işareti ve boş olmayan ondalık basamak dizisi. Örneğin: 3.46101e + 007, 13.19e-013 vb.
  • Onaltılık kayan nokta değeri için :
    • 0x veya 0X ile başlayan ve ardından isteğe bağlı olarak bir ondalık nokta (.) İçeren boş olmayan bir onaltılık rakam dizisi izleyen bir dize. Örneğin: 0xfa5, -0xb1f.24, vb.
    • İsteğe bağlı bir üs bölümü (p veya P) ve ardından isteğe bağlı bir + veya - işareti ve boş olmayan onaltılık rakam dizisi. Örneğin: 0x51c.23p5, -0x2a.3p-3, vb.
  • Sonsuzluk :
    • INF veya INFINITY (büyük / küçük harf dikkate alınmaz). Örneğin: -Inf, InfiNiTy, vb.
  • NaN (Sayı Değil) :
    • NAN veya NAN dizisi (büyük / küçük harf dikkate alınmaz) burada sıra, yalnızca alfanümerik karakterlerden veya alt çizgiden (_) oluşan bir karakter dizisidir. Sonuç, sessiz bir NaN'dir. Örneğin: Nan, NaNab1, vb.

Örnek 3: wcstod () üsler ve onaltılık sayılarla nasıl çalışır?

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

Programı çalıştırdığınızda, çıktı:

 Wide String = -136.31e-2Endψ Double value = -1.3631 End String = Endψ Geniş String = 0x11a.2c ת Double value = 282.172 End String = ת

Örnek 4: INFINITY ve NaN için wcstod Durumları

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

Programı çalıştırdığınızda, çıktı:

 Geniş Dize = -inFinityxΣy Çift değer = -inf Son Dize = xΣy Geniş Dize = NaN11Щ Çift değer = nan Bitiş Dize = 11Щ

Genel olarak, wcstod () işlevi için geçerli bir kayan noktalı bağımsız değişken aşağıdaki biçime sahiptir:

 (boşluk) (- | +) (rakamlar) (.digits) ((e | E) (- | +) rakamlar)

Wcstod () işlevi, birincil boşluk olmayan karakter bulunana kadar tüm öndeki boşluk karakterlerini yok sayar.

Daha sonra, bu karakterden başlayarak, geçerli bir kayan nokta gösterimi oluşturan ve bunları bir kayan nokta değerine dönüştüren mümkün olduğunca çok karakter alır. Son geçerli karakterden sonra dizeden geriye kalan her şey, str_end ile gösterilen nesnede saklanır.

Örnek 5: Başta boşluk olan wcstod () işlevi

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

Programı çalıştırdığınızda, çıktı:

 Geniş Dize = 21.69Ӹaa Çift değer = 21.69 Bitiş Dize = Ӹaa

Ilginç makaleler...