Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan dengan Cekap jika Rentetan C Mewakili Nombor?

Bagaimanakah Saya Boleh Menentukan dengan Cekap jika Rentetan C Mewakili Nombor?

Mary-Kate Olsen
Lepaskan: 2024-12-24 05:33:21
asal
479 orang telah melayarinya

How Can I Efficiently Determine if a C   String Represents a Number?

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();
}
Salin selepas log masuk

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();
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan