C ++ wcstof () - C ++ Pustaka Standar

Fungsi wcstof () di C ++ mengartikan konten string lebar sebagai bilangan floating point dan mengembalikan nilainya sebagai float.

Fungsi ini 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.

wcstof () prototipe

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

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

Parameter wcstof ()

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

wcstof () Nilai kembali

Fungsi wcstof () mengembalikan:

  • nilai float (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 wcstof () bekerja?

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

Saat Anda menjalankan program, hasilnya adalah:

 Wide String = 40.001∏c12 Nilai float = 40.001 End String = ∏c12

Contoh 2: fungsi wcstof () tanpa karakter tambahan

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

Saat Anda menjalankan program, hasilnya adalah:

 Wide String = 791.513 Nilai float = 791.513 End String =

Nilai floating-point yang valid untuk fungsi wcstof () 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 wcstof () bekerja 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; )

Saat Anda menjalankan program, hasilnya adalah:

 String Lebar = 39.119e + 2xx ઓ Nilai float = 3911.9 String Akhir = xx String String Lebar = 0Xf1.23cØa1 Nilai float = 241.14 String Akhir = Øa1

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

Saat Anda menjalankan program, hasilnya adalah:

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

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

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

Fungsi wcstof () 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 wcstof () 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; 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; )

Saat Anda menjalankan program, hasilnya adalah:

 Wide String = 21.69Ӹaa Nilai float = 21.69 End String = Ӹaa

Artikel yang menarik...