Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengenalpasti Nilai Berangka Dengan Cekap Dalam Rentetan dalam C?

Bagaimanakah Saya Boleh Mengenalpasti Nilai Berangka Dengan Cekap Dalam Rentetan dalam C?

Patricia Arquette
Lepaskan: 2024-12-18 02:08:10
asal
783 orang telah melayarinya

How Can I Efficiently Identify Numeric Values Within a String in C  ?

Cara Mengenalpasti Nombor Dalam Rentetan Menggunakan C

Mengekodkan fungsi yang mampu mengesahkan sama ada rentetan mewakili nilai angka dalam C boleh menimbulkan cabaran yang ketara. Artikel ini menangani isu ini dan membentangkan penyelesaian yang cekap.

Percubaan Asal

Pada mulanya, fungsi bernama isParam telah dibangunkan dengan tujuan untuk memastikan sama ada baris dalam teks fail membentuk nilai angka. Fungsi ini menggunakan fungsi isdigit dan atoi, walaupun ia mengalami ralat yang tidak dijangka.

Pendekatan Alternatif

Sebaliknya daripada fungsi asal, kaedah yang berbeza disyorkan. Pendekatan ini melibatkan melintasi rentetan sehingga aksara bukan angka ditemui. Jika mana-mana aksara sedemikian dikenal pasti, rentetan itu dianggap bukan angka. Berikut ialah kodnya:

bool is_number(const std::string& s)
{
    std::string::const_iterator it = s.begin();
    while (it != s.end() && std::isdigit(*it)) ++it;
    return !s.empty() && it == s.end();
}
Salin selepas log masuk

Sebagai alternatif, sintaks C 11 boleh dimanfaatkan untuk mencapai hasil yang sama:

bool is_number(const std::string& s)
{
    return !s.empty() && std::find_if(s.begin(), 
        s.end(), [](unsigned char c) { return !std::isdigit(c); }) == s.end();
}
Salin selepas log masuk

Penghadan dan Penambahbaikan

Perlu diingat bahawa penyelesaian yang disediakan hanya mengesahkan integer positif. Untuk senario yang melibatkan integer negatif atau nilai perpuluhan, kaedah berasaskan perpustakaan yang lebih komprehensif adalah dinasihatkan. Memanjangkan kod untuk mengendalikan integer negatif agak mudah, tetapi melaksanakan pengesahan perpuluhan memerlukan pendekatan yang lebih mantap.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengenalpasti Nilai Berangka Dengan Cekap Dalam Rentetan dalam C?. 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