Bagaimanakah Saya Boleh Menukar Rentetan kepada Nilai Berganda dalam C semasa Mengendalikan Input Bukan Berangka?

Patricia Arquette
Lepaskan: 2024-10-31 08:07:29
asal
926 orang telah melayarinya

How Can I Convert Strings to Double Values in C   while Handling Non-Numerical Inputs?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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:

  • "0"
  • "0."
  • "0.0"
  • " 0"
  • "-0"

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan