C ++ wcstold () - Perpustakaan Standard C ++

Fungsi wcstold () dalam C ++ menafsirkan kandungan rentetan lebar sebagai nombor titik terapung dan mengembalikan nilainya sebagai ganda panjang.

Fungsi wcstold () juga menetapkan penunjuk untuk menunjuk ke watak lebar pertama setelah watak terakhir yang sah dari rentetan lebar jika ada, jika tidak, penunjuk diatur ke nol.

Ia ditakrifkan dalam fail tajuk.

prototaip wcstold ()

 panjang dua kali ganda (const wchar_t * str, wchar_t ** str_end);

Fungsi wcstold () mengambil rentetan lebar dan penunjuk ke watak lebar sebagai parameternya, menafsirkan kandungan rentetan lebar sebagai nombor titik terapung dan mengembalikan nilai ganda panjang.

wcstold () Parameter

  • str: Rentetan lebar yang mempunyai perwakilan nombor titik terapung.
  • str_end: Penunjuk ke penunjuk ke watak yang luas. Nilai str_end ditetapkan oleh fungsi ke watak seterusnya dalam str setelah watak terakhir yang sah. Parameter ini juga boleh menjadi penunjuk kosong.

wcstold () Nilai pulangan

Fungsi wcstold () mengembalikan:

  • nilai berganda panjang (yang ditukarkan dari tali lebar).
  • 0.0 sekiranya tiada penukaran yang sah dapat dilakukan.

Sekiranya nilai yang ditukar berada di luar julat, ralat ralat berlaku dan HUGE_VAL positif atau negatif dikembalikan.

Contoh 1: Bagaimana fungsi wcstold () berfungsi?

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

Semasa anda menjalankan program, outputnya adalah:

 String Lebar = 93.410η ² Nilai Double Panjang = 93.41 String Akhir = η ת

Contoh 2: fungsi wcstold () tanpa mengekori watak

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

Semasa anda menjalankan program, outputnya adalah:

 String Lebar = 93.410 Nilai Double Panjang = 93.41 String Akhir =

Nilai floating-point yang sah untuk fungsi wcstold () terdiri daripada tanda + atau - pilihan yang diikuti oleh salah satu set berikut:

  • Untuk nilai titik apungan perpuluhan :
    • Kumpulan digit perpuluhan (0-9), secara opsional mengandungi titik perpuluhan (.). Contohnya: 13.170, -5.63, dll.
    • Bahagian eksponen pilihan (e atau E) diikuti dengan tanda + atau - pilihan dan urutan digit perpuluhan yang tidak kosong. Contohnya: 3.46101e + 007, 13.19e-013, dll.
  • Untuk nilai titik terapung heksadesimal :
    • Rentetan yang bermula dengan 0x atau 0X, diikuti oleh urutan digit heksadesimal yang tidak kosong, yang opsional mengandungi titik perpuluhan (.). Contohnya: 0xfa5, -0xb1f.24, dll.
    • Bahagian eksponen pilihan (p atau P) diikuti dengan tanda + atau - pilihan dan urutan digit heksadesimal kosong. Contohnya: 0x51c.23p5, -0x2a.3p-3, dll.
  • Infiniti :
    • INF atau INFINITY (mengabaikan kes). Contohnya: -Inf, InfiNiTy, dll.
  • NaN (Bukan Nombor) :
    • Urutan NAN atau NAN (mengabaikan huruf kecil) di mana urutan adalah urutan watak yang hanya terdiri daripada watak alfanumerik atau garis bawah (_). Hasilnya adalah NaN yang tenang. Contohnya: Nan, NaNab1, dll.

Contoh 3: Bagaimana wcstold () berfungsi dengan eksponen dan heksadesimal?

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

Semasa anda menjalankan program, outputnya adalah:

 Wide String = 34.901Æñ Long Double value = 34.901 End String = Æñ Wide String = 0Xfc1.a12χr12 Long Double value = 4033.63 End String = χr12

Contoh 4: wcstold kes untuk INFINITY dan 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"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; )

Semasa anda menjalankan program, outputnya adalah:

 Wide String = inFinityxSy Long Double value = inf End String = xSy Wide String = NaN22Щ Panjang Double nilai = nan End String = 22Щ

Secara umum, argumen floating point yang sah untuk fungsi wcstold () mempunyai bentuk berikut:

 (ruang kosong) (- | +) (digit) (.digits) ((e | E) (- | +) digit)

Fungsi wcstold () mengabaikan semua watak ruang kosong sehingga watak bukan ruang kosong utama dijumpai.

Kemudian, bermula dari watak ini, diperlukan sebanyak mungkin watak yang membentuk perwakilan titik apungan yang sah dan mengubahnya menjadi nilai titik terapung. Apa sahaja yang tersisa dari rentetan setelah watak terakhir yang sah disimpan di dalam objek yang ditunjukkan oleh str_end.

Contoh 5: fungsi wcstold () dengan ruang kosong terkemuka

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

Semasa anda menjalankan program, outputnya adalah:

 Jalur Lebar = 59.013 कॵ Nilai Double Panjang = 59.013 String Akhir = कॵ

Artikel menarik...