Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Kegagalan Penukaran Rentetan kepada Integer dalam C?

Bagaimana Mengendalikan Kegagalan Penukaran Rentetan kepada Integer dalam C?

DDD
DDDasal
2024-11-04 21:32:02508semak imbas

How to Handle String to Integer Conversion Failures in C  ?

Menukar Rentetan kepada Integer dengan Pengendalian Kegagalan dalam C

Apabila berurusan dengan rentetan dalam C , keperluan sering timbul untuk menukarnya kepada perwakilan berangka seperti integer. Satu pendekatan biasa untuk ini ialah menggunakan fungsi std::stoi Perpustakaan Standard C. Walau bagaimanapun, fungsi ini tidak mempunyai keupayaan untuk melaporkan kegagalan dalam penukaran. Untuk kod yang lebih mantap, kami meneroka cara mengendalikan penukaran yang gagal menggunakan rangsangan::lexical_cast dan pendekatan alternatif.

boost::lexical_cast

Golongan::lexical_cast fungsi menyediakan cara yang teguh untuk menukar rentetan kepada integer. Ia memberikan pengecualian jika penukaran tidak dapat dilakukan. Coretan kod berikut menunjukkan penggunaannya:

<code class="cpp">#include <boost/lexical_cast.hpp>

try {
    int i = boost::lexical_cast<int>(s);
    // ...
} catch(...) {
    // ...
}</code>

Pendekatan Bukan Peningkatan

Jika perpustakaan rangsangan tidak tersedia, kaedah alternatif boleh digunakan:

  1. Menggunakan std::stringstream: Dengan membaca rentetan ke dalam objek std::stringstream, anda boleh gagal penukaran jika sama ada rentetan itu tidak boleh dibaca sebagai integer atau terdapat tambahan bukan- input ruang kosong.
  2. Mencipta fungsi lexical_cast tersuai: Fungsi ini boleh dilaksanakan dengan membungkus pendekatan std::stringstream dalam templat fungsi.
  3. Menggunakan versi no-throw bagi pendekatan std::stringstream: Jika anda ingin mengelak daripada melontar pengecualian, anda boleh mencipta fungsi lexical_cast yang mengembalikan bool yang menunjukkan kejayaan atau kegagalan daripada penukaran.

Ringkasnya, menggunakan boost::lexical_cast, std::stringstream, atau fungsi lexical_cast tersuai membolehkan penukaran yang mantap daripada rentetan kepada integer dengan keupayaan pengendalian kegagalan. Pilihan yang tepat bergantung pada ketersediaan perpustakaan dan gelagat pengecualian yang diperlukan.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Kegagalan Penukaran Rentetan kepada Integer dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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