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
Mary-Kate Olsenasal
2024-12-24 05:33:21375semak imbas

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();
}

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!

Kenyataan:
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