Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menentukan jika Rentetan C Mewakili Integer?

Bagaimana untuk Menentukan jika Rentetan C Mewakili Integer?

DDD
DDDasal
2024-11-07 04:17:02375semak imbas

How to Determine if a C   String Represents an Integer?

Menentukan jika Rentetan C Mewakili Integer

Masalah:

Apabila bekerja dengan input pengguna, anda mungkin menghadapi rentetan yang mengandungi gabungan perkataan dan nombor. Jika anda ingin mengasingkan perkataan sahaja, anda memerlukan kaedah untuk membezakannya daripada nombor.

Penyelesaian:

Satu pendekatan untuk mengesahkan jika rentetan mewakili integer ialah untuk menggunakan fungsi strtol(). Untuk memudahkan penggunaannya, anda boleh memasukkannya ke dalam fungsi tersuai:

<code class="cpp">inline bool isInteger(const std::string & s)
{
   if(s.empty() || ((!isdigit(s[0])) &amp;&amp; (s[0] != '-') &amp;&amp; (s[0] != '+'))) return false;

   char * p;
   strtol(s.c_str(), &amp;p, 10);

   return (*p == 0);
}</code>

Penjelasan:

strtol() menghuraikan rentetan sebagai nilai berangka, berhenti di aksara bukan berangka pertama. Dengan membekalkan penunjuk kepada pembolehubah aksara (p), ia menunjukkan kedudukan aksara tidak sah pertama. Jika p menunjuk ke hujung rentetan, semua aksara telah berjaya ditukar, menunjukkan bahawa rentetan itu ialah integer.

Penggunaan:

Dalam fungsi utama anda, anda boleh menyepadukan fungsi ini seperti berikut:

<code class="cpp">int main () {
  stringstream ss (stringstream::in | stringstream::out);
  string word;
  string str;
  getline(cin,str);
  ss<<str;
  while(ss>>word)
    {
      if(isInteger(word))
        continue;
      cout<<word<<endl;
    }
}</code>

Ini akan mengeluarkan perkataan yang bukan integer sambil mengabaikan input berangka.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan jika Rentetan C Mewakili Integer?. 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