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

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

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

wcstold () prototipi

 uzun çift wcstold (const wchar_t * str, wchar_t ** str_end);

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

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

wcstold () Dönüş değeri

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

  • uzun bir çift değer (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: wcstold () 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"93.410u03b7u05ea"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Geniş String = 93.410η ת Long Double değeri = 93.41 End String = η ת

Örnek 2: wcstold () işlevi, sonda karakterler olmadan

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"93.410"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Geniş Dize = 93.410 Uzun Çift değer = 93.41 Bitiş Dize =

Wcstold () işlevi için geçerli bir kayan nokta değeri, isteğe bağlı bir + veya - işaretini ve 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: wcstold () ü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"34.901u00c6u00f1"; wchar_t str2() = L"0Xfc1.a12u03c7r12"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Geniş Dize = 34.901Æñ Uzun Çift değer = 34.901 Bitiş Dize = Æñ Geniş Dize = 0Xfc1.a12χr12 Uzun Çift değer = 4033.63 Bitiş Dize = χr12

Örnek 4: INFINITY ve NaN için wcstold 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"NaN22u0429"; wchar_t *end; long double value; value = wcstold(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstold(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Geniş Dize = inFinityxΣy Uzun Çift değer = inf Son Dize = xΣy Geniş Dize = NaN22Щ Uzun Çift değer = nan Bitiş Dize = 22Щ

Genel olarak, wcstold () 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)

Wcstold () 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 wcstold () işlevi

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L" 59.013u0915u0975"; wchar_t *end; long double value; value = wcstold(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Long Double value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

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

 Wide String = 59.013 कॵ Long Double değeri = 59.013 End String = कॵ

Ilginç makaleler...