Menentukan sama ada Rentetan ialah Nombor dalam C
Apabila bekerja dengan data berasaskan teks, adalah perlu untuk menentukan sama ada sesuatu yang diberikan rentetan mewakili nilai berangka. Dalam C , terdapat berbilang pendekatan untuk mendekati ini:
Satu kaedah adalah untuk menyemak sama ada rentetan mengandungi sebarang aksara bukan digit. Jika ya, rentetan itu bukan nombor. Berikut ialah fungsi yang mengikuti pendekatan ini:
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, C 11 menyediakan sintaks yang lebih ringkas:
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(); }
Fungsi ini kedua-duanya mengesahkan rentetan mengandungi digit semata-mata. Walau bagaimanapun, ia hanya berfungsi untuk integer positif. Mengembangkannya untuk menyokong integer negatif atau pecahan memerlukan penyelesaian berasaskan perpustakaan yang lebih mantap. Dengan menyemak aksara bukan digit atau menggunakan C 11, anda boleh menentukan dengan cekap sama ada rentetan mewakili nilai berangka, memenuhi keperluan khusus anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan dengan Cekap jika Rentetan C Mewakili Nombor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!