Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menukar Rentetan kepada Nilai Berganda dalam C semasa Mengendalikan Input Bukan Berangka?

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
990 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!

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