C ++ wcstold () - C ++ Pustaka Standar

Fungsi wcstold () di C ++ mengartikan konten string lebar sebagai angka floating point dan mengembalikan nilainya sebagai double panjang.

Fungsi wcstold () juga menyetel penunjuk untuk menunjuk ke karakter lebar pertama setelah karakter valid terakhir dari string lebar jika ada, jika tidak, penunjuk disetel ke nol.

Ini didefinisikan dalam file header.

wcstold () prototipe

 wcstold ganda panjang (const wchar_t * str, wchar_t ** str_end);

Fungsi wcstold () mengambil string lebar dan penunjuk ke karakter lebar sebagai parameternya, menafsirkan konten string lebar sebagai angka floating point dan mengembalikan nilai ganda yang panjang.

Parameter wcstold ()

  • str: String lebar yang mewakili bilangan floating point.
  • str_end: Penunjuk ke penunjuk ke karakter lebar. Nilai str_end diatur oleh fungsi ke karakter berikutnya dalam str setelah karakter terakhir yang valid. Parameter ini juga bisa menjadi penunjuk nol.

wcstold () Nilai kembali

Fungsi wcstold () mengembalikan:

  • nilai ganda panjang (yang diubah dari string lebar).
  • 0,0 jika tidak ada konversi valid yang dapat dilakukan.

Jika nilai yang dikonversi berada di luar rentang, kesalahan rentang terjadi dan HUGE_VAL positif atau negatif dikembalikan.

Contoh 1: Bagaimana fungsi wcstold () bekerja?

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

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = 93.410η ת Nilai Ganda Panjang = 93.41 Senar Ujung = η ת

Contoh 2: Fungsi wcstold () tanpa karakter tambahan

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

Saat Anda menjalankan program, hasilnya adalah:

 Wide String = 93.410 Long Double value = 93.41 End String =

Nilai floating-point yang valid untuk fungsi wcstold () terdiri dari tanda + atau - opsional yang diikuti oleh salah satu set berikut:

  • Untuk nilai floating-point desimal :
    • Sekelompok digit desimal (0-9), secara opsional berisi titik desimal (.). Misalnya: 13.170, -5.63, dll.
    • Bagian eksponen opsional (e atau E) diikuti dengan tanda + atau - opsional dan urutan digit desimal yang tidak kosong. Misalnya: 3.46101e + 007, 13.19e-013, dll.
  • Untuk nilai floating-point heksadesimal :
    • String yang dimulai dengan 0x atau 0X, diikuti dengan urutan digit heksadesimal yang tidak kosong, secara opsional berisi titik desimal (.). Misalnya: 0xfa5, -0xb1f.24, dll.
    • Bagian eksponen opsional (p atau P) diikuti dengan tanda + atau - opsional dan urutan digit heksadesimal yang tidak kosong. Misalnya: 0x51c.23p5, -0x2a.3p-3, dll.
  • Infinity :
    • INF atau INFINITY (mengabaikan kasus). Misalnya: -Inf, InfiNiTy, dll.
  • NaN (Bukan Angka) :
    • Urutan NAN atau NAN (kasus diabaikan) dimana urutan adalah urutan karakter yang hanya terdiri dari karakter alfanumerik atau garis bawah (_), hasilnya NaN tenang. Misalnya: Nan, NaNab1, dll.

Contoh 3: Bagaimana wcstold () bekerja 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; )

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = 34.901Æñ Nilai Ganda Panjang = 34.901 String Ujung = Æñ String Lebar = 0Xfc1.a12χr12 Nilai Ganda Panjang = 4033,63 String Ujung = χr12

Contoh 4: wcstold case 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; )

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = inFinityxΣy Long Double value = inf End String = xΣy Wide String = NaN22Щ Long Double value = nan End String = 22Щ

Secara umum, argumen floating point yang valid untuk fungsi wcstold () memiliki bentuk berikut:

 (spasi) (- | +) (digit) (.digits) ((e | E) (- | +) digit)

Fungsi wcstold () mengabaikan semua karakter spasi putih sebelum karakter non-spasi putih utama ditemukan.

Kemudian, dimulai dari karakter ini, dibutuhkan karakter sebanyak mungkin yang membentuk representasi floating-point yang valid dan mengubahnya menjadi nilai floating-point. Apapun yang tersisa dari string setelah karakter valid terakhir disimpan di objek yang ditunjukkan oleh str_end.

Contoh 5: fungsi wcstold () dengan spasi di depan

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

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = 59.013 कॵ Panjang Nilai Ganda = 59.013 String Ujung = कॵ

Artikel yang menarik...