C ++ wcstof () - Perpustakaan Standard C ++

Fungsi wcstof () dalam C ++ menafsirkan isi rentetan lebar sebagai nombor titik terapung dan mengembalikan nilainya sebagai pelampung.

Fungsi ini juga menetapkan penunjuk untuk menunjuk ke watak lebar pertama setelah watak terakhir yang sah dari tali lebar jika ada, jika tidak, penunjuk disetkan ke nol.

Ia ditakrifkan dalam fail tajuk.

prototaip wcstof ()

 apungan wcstof (const wchar_t * str, wchar_t ** str_end);

Fungsi wcstof () mengambil rentetan lebar dan penunjuk ke watak lebar sebagai parameternya, menafsirkan isi rentetan lebar sebagai nombor titik terapung dan mengembalikan nilai apungan.

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

wcstof () Nilai pulangan

Fungsi wcstof () mengembalikan:

  • nilai apungan (yang ditukar 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 wcstof () berfungsi?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"40.001u220fc12"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 String Lebar = 40.001∏c12 Nilai apungan = 40.001 String Akhir = ∏c12

Contoh 2: fungsi wcstof () tanpa mengekori watak

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str() = L"791.513"; wchar_t *end; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 Wide String = 791.513 Nilai apungan = 791.513 End String =

Nilai floating-point yang sah untuk fungsi wcstof () 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 wcstof () berfungsi dengan eksponen dan heksadesimal?

 #include #include #include using namespace std; int main() ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t str1() = L"39.119e+2xxu0a93"; wchar_t str2() = L"0Xf1.23cu00d8a1"; wchar_t *end; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 String Lebar = 39.119e + 2xx value Nilai terapung = 3911.9 String Akhir = xx ing String Lebar = 0Xf1.23cØa1 Nilai terapung = 241.14 String Akhir = Øa1

Contoh 4: 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; float value; value = wcstof(str1,&end); wcout << L"Wide String = " << str1 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; value = wcstof(str2,&end); wcout << L"Wide String = " << str2 << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 Wide String = -inFinityxΣy Float value = -inf End String = xSy Wide String = NaN11Щ Nilai terapung = nan End String = 11Щ

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

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

Fungsi wcstof () 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 wcstof () 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; float value; value = wcstof(str,&end); wcout << L"Wide String = " << str << endl; wcout << L"Float value = " << value << endl; wcout << L"End String = " << end << endl; return 0; )

Semasa anda menjalankan program, outputnya adalah:

 String Lebar = 21.69Ӹaa Nilai terapung = 21.69 String Akhir = Ӹaa

Artikel menarik...