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

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan