Bagaimana untuk Menukar Rentetan kepada Beregu dalam C dan Mengendalikan Rentetan Bukan Berangka dengan Selamat?

Patricia Arquette
Lepaskan: 2024-10-26 07:28:30
asal
917 orang telah melayarinya

How to Safely Convert Strings to Doubles in C   and Handle Non-Numerical Strings?

Menukar Rentetan kepada Beregu dalam C dengan Pengendalian Khas untuk Rentetan Bukan Berangka

Dalam C , menukar rentetan kepada beregu boleh dilakukan dengan lancar menggunakan fungsi terbina dalam. Walau bagaimanapun, menjadi penting untuk membezakan antara rentetan berangka dan bukan berangka. Untuk menangani cabaran ini, kami membentangkan penyelesaian yang mengembalikan 0 untuk rentetan bukan berangka.

Pelaksanaan Fungsi:

Inti penyelesaian kami terletak pada fungsi string_to_double:

<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

Cara Ia Berfungsi:

  1. Kami mencipta strim rentetan input (std::istringstream) objek i untuk membaca rentetan dengan selamat.
  2. Kami cuba mengeluarkan dua kali ganda daripada strim. Jika berjaya, rangkap dua ditetapkan kepada x.
  3. Jika tiada rangkap dua boleh diekstrak (i ​​>> x gagal), kita kembalikan 0, menunjukkan rentetan bukan berangka.

Menguji Fungsi:

Dalam kes ujian yang disediakan, kami menunjukkan cara fungsi mentafsir rentetan angka dan bukan angka yang berbeza dengan betul:

<code class="cpp">int main() {
  assert(0.5 == string_to_double("0.5"));
  assert(0.5 == string_to_double("0.5 "));
  assert(0.5 == string_to_double(" 0.5"));
  assert(0.5 == string_to_double("0.5a"));

  // Non-numerical strings will return 0:
  assert(0 == string_to_double("foobar"));
}</code>
Salin selepas log masuk

Keterbatasan:

Adalah penting untuk ambil perhatian bahawa disebabkan oleh keperluan khusus untuk mengembalikan 0 untuk rentetan bukan berangka, membezakan antara rentetan berangka yang mewakili rentetan sifar dan rentetan yang benar-benar bukan berangka adalah tidak mungkin.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Rentetan kepada Beregu dalam C dan Mengendalikan Rentetan Bukan Berangka dengan Selamat?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!