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

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

Bu işlev aynı zamanda geniş dizgenin son geçerli karakterinden sonraki ilk geniş karaktere işaret edecek şekilde bir gösterici ayarlar, aksi takdirde işaretçi boş olarak ayarlanır.

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

wcstof () prototipi

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

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

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

wcstof () Dönüş değeri

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

  • bir float değeri (geniş dizeden dönüştürülen).
  • 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: wcstof () 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"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; )

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

 Geniş String = 40.001∏c12 Float değeri = 40.001 End String = ∏c12

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

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

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

 Geniş Dize = 791.513 Kayan değer = 791.513 Bitiş Dize =

Wcstof () 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: wcstof () ü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"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; )

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

 Geniş String = 39.119e + 2xx ઓ Float değer = 3911.9 End String = xx ઓ Wide String = 0Xf1.23cØa1 Float değeri = 241.14 End String = Øa1

Örnek 4: INFINITY ve NaN için wcstof vakaları

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

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

 Wide String = -inFinityxΣy Float değeri = -inf End String = xΣy Wide String = NaN11Щ Float değeri = nan End String = 11Щ

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

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

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

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

 Geniş Dize = 21.69Ӹaa Kayan değer = 21.69 Bitiş Dize = Ӹaa

Ilginç makaleler...