C ++ wcstod () - Perpustakaan Standard C ++

Fungsi wcstod () dalam C ++ menafsirkan kandungan rentetan lebar sebagai nombor titik terapung dan mengembalikan nilainya sebagai dua kali ganda.

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

Ia ditakrifkan dalam fail tajuk.

prototaip wcstod ()

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

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

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

wcstod () Nilai pulangan

Fungsi wcstod () mengembalikan:

  • nilai berganda (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 wcstod () berfungsi?

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

Semasa anda menjalankan program, outputnya adalah:

 String Lebar = 83.201xzҖ value Nilai berganda = 83.201 String Akhir = xzҖ.

Contoh 2: fungsi wcstod () tanpa mengekori watak

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

Semasa anda menjalankan program, outputnya adalah:

 String Lebar = 83.201 Nilai berganda = 83.201 String Akhir =

Nilai floating-point yang sah untuk fungsi wcstod () terdiri daripada tanda + atau - pilihan 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 wcstod () berfungsi 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; )

Semasa anda menjalankan program, outputnya adalah:

 Wide String = -136.31e-2Endψ Nilai ganda = -1.3631 End String = Endψ Wide String = 0x11a.2c ת Nilai berganda = 282.172 End String = ת

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

Semasa anda menjalankan program, outputnya adalah:

 Wide String = -inFinityxΣy Nilai ganda = -inf End String = xSy Wide String = NaN11Щ Nilai berganda = nan End String = 11Щ

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

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

Fungsi wcstod () 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 wcstod () dengan ruang kosong terkemuka

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

Semasa anda menjalankan program, outputnya adalah:

 Wide String = 21.69Ӹaa Nilai berganda = 21.69 String Akhir = Ӹaa

Artikel menarik...