C ++ wcstod () - C ++ Pustaka Standar

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

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

Ini didefinisikan dalam file header.

wcstod () prototipe

 wcstod ganda (const wchar_t * str, wchar_t ** str_end);

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

wcstod () Parameter

  • 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.

wcstod () Nilai kembali

Fungsi wcstod () mengembalikan:

  • nilai ganda (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 wcstod () bekerja?

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

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = 83.201xzҖ ڇ Nilai ganda = 83.201 String Akhir = xzҖ ڇ

Contoh 2: fungsi wcstod () tanpa karakter tambahan

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

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = 83.201 Nilai ganda = 83.201 String Akhir =

Nilai floating-point yang valid untuk fungsi wcstod () terdiri dari tanda + atau - opsional 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 wcstod () bekerja dengan eksponen dan heksadesimal?

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

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = -136.31e-2Endψ Nilai ganda = -1.3631 String Ujung = Akhirψ String Lebar = 0x11a.2c ת Nilai ganda = 282.172 String Akhir = ת

Contoh 4: Kasus wcstod 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"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; )

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = -inFinityxΣy Nilai ganda = -inf String Akhir = xΣy String Lebar = NaN11Щ Nilai ganda = nan String Akhir = 11Щ

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

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

Fungsi wcstod () 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 wcstod () dengan spasi di depan

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

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = 21.69Ӹaa Nilai Ganda = 21.69 End String = Ӹaa

Artikel yang menarik...