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
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!