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])) && (s[0] != '-') && (s[0] != '+'))) return false; char * p; strtol(s.c_str(), &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!