Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengesan Rentetan Berangka dengan Cekap dalam C?

Bagaimanakah Saya Boleh Mengesan Rentetan Berangka dengan Cekap dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-29 08:40:11450semak imbas

How Can I Efficiently Detect Numeric Strings in C  ?

Mengesan Rentetan Numerik dalam C

Menentukan sama ada rentetan mewakili nilai angka boleh menjadi keperluan di mana-mana dalam pelbagai senario pengaturcaraan. Sebagai contoh, dalam konteks penghuraian fail data, mengenal pasti garis berangka menjadi penting. Walaupun pelbagai kaedah wujud, artikel ini menumpukan pada dua pendekatan yang cekap untuk melaksanakan tugas ini dalam alam C .

Pendekatan Berulang

Kaedah yang paling mudah dan paling mudah melibatkan pengulangan melalui setiap aksara dalam rentetan. Jika mana-mana aksara bukan digit, rentetan itu dianggap bukan angka.

bool is_number(const std::string& s) {
    for (char c : s) {
        if (!std::isdigit(c)) {
            return false;
        }
    }
    return true;
}

C 11's find_if

Penyokong C Moden mungkin lebih suka menggunakan find_if untuk pelaksanaan yang ringkas . Pendekatan ini memanfaatkan ungkapan lambda untuk mencari aksara bukan digit pertama, mengembalikan palsu jika ditemui dan benar jika tiada.

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

Kaveat

Adalah penting untuk ambil perhatian bahawa kedua-dua teknik menganggap hanya integer positif. Untuk mengendalikan integer atau pecahan negatif, penyelesaian yang lebih komprehensif disyorkan, yang berpotensi menggunakan perpustakaan pihak ketiga seperti Boost atau C 20's pengepala.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Rentetan Berangka dengan Cekap 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