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
Patricia Arquetteasal
2024-12-18 02:08:10795semak imbas

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();
}

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();
}

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!

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