Menukar Rentetan kepada Nilai Berganda dalam C
Pernyataan Masalah:
Tukar perwakilan rentetan daripada nombor kepada nilai berganda titik terapung. Jika rentetan itu bukan berangka, kembalikan 0.
Penyelesaian:
Untuk menukar rentetan kepada nilai berganda dalam C , anda boleh menggunakan fungsi std::stod , yang mengambil parameter rentetan dan menukarnya kepada berganda. Walau bagaimanapun, fungsi ini tidak mengembalikan 0 untuk rentetan bukan berangka.
Fungsi Tersuai untuk Pengendalian Bukan Berangka:
Untuk menangani perkara ini, kami boleh mencipta fungsi tersuai yang mengembalikan 0 untuk rentetan bukan berangka. Berikut ialah pelaksanaan:
<code class="cpp">#include <sstream> double string_to_double(const std::string& s) { std::istringstream i(s); double x; if (!(i >> x)) { return 0; } return x; }</code>
Fungsi ini menggunakan std::istringstream untuk mengekstrak nilai berganda daripada rentetan. Jika pengekstrakan gagal, ia akan mengembalikan 0.
Contoh Penggunaan:
Berikut ialah beberapa contoh penggunaan fungsi string_to_double:
<code class="cpp">assert(0.5 == string_to_double("0.5")); assert(0.5 == string_to_double("0.5 ")); assert(0.5 == string_to_double("0.5a")); assert(0 == string_to_double("foobar"));</code>
Nota Berkenaan Sifar Bukan Berangka:
Adalah penting untuk ambil perhatian bahawa fungsi ini tidak boleh membezakan semua rentetan bukan berangka daripada sifar. Sebagai contoh, rentetan berikut semuanya dianggap sebagai sifar mengikut pelaksanaan ini:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan kepada Nilai Berganda dalam C semasa Mengendalikan Input Bukan Berangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!