Menyemak Rentetan Digit Sahaja dalam C
Menentukan sama ada rentetan atau aksara* mengandungi digit sahaja adalah tugas biasa dalam pengaturcaraan. Artikel ini meneroka dua pendekatan yang cekap:
1. Menggunakan find_first_not_of
Kaedah ini berulang melalui rentetan, mencari aksara bukan digit pertama. Jika tiada yang ditemui (find_first_not_of("0123456789") mengembalikan std::string::npos), rentetan itu dianggap digit sahaja:
<code class="cpp">bool is_digits(const std::string &str) { return str.find_first_not_of("0123456789") == std::string::npos; }</code>
2. Menggunakan std::all_of (C 11 dan seterusnya)
Kaedah ini menggunakan predikat untuk menyemak setiap aksara rentetan. Dalam kes ini, predikatnya ialah ::isdigit, yang mengembalikan benar untuk aksara digit:
<code class="cpp">bool is_digits(const std::string &str) { return std::all_of(str.begin(), str.end(), ::isdigit); // C++11 }</code>
Adakah Fungsi Digunakan pada Kedua-dua Rentetan dan aksara*?
Ya, fungsi ini boleh digunakan untuk kedua-dua std::string dan char* dengan pengubahsuaian kecil. Untuk char*, pembina std::string boleh digunakan untuk menukar char* kepada std::string:
<code class="cpp">bool is_digits(const char *str) { std::string str_copy(str); return is_digits(str_copy); }</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan jika String atau aksara* Hanya Mengandungi Digit dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!