Heim > Artikel > Backend-Entwicklung > Wie kann festgestellt werden, ob ein C-String eine Ganzzahl darstellt?
Problem:
Beim Arbeiten mit Benutzereingaben können Zeichenfolgen auftreten die eine Mischung aus Wörtern und Zahlen enthalten. Wenn Sie nur die Wörter isolieren möchten, benötigen Sie eine Methode, um sie von Zahlen zu unterscheiden.
Lösung:
Ein Ansatz zur Überprüfung, ob eine Zeichenfolge eine Ganzzahl darstellt, ist um die Funktion strtol() zu verwenden. Um die Verwendung zu vereinfachen, können Sie es in eine benutzerdefinierte Funktion integrieren:
<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>
Erklärung:
strtol() analysiert eine Zeichenfolge als numerischen Wert und stoppt bei das erste nicht numerische Zeichen. Durch die Bereitstellung eines Zeigers auf eine Zeichenvariable (p) wird die Position des ersten ungültigen Zeichens angezeigt. Wenn p auf das Ende der Zeichenfolge zeigt, wurden alle Zeichen erfolgreich konvertiert, was darauf hinweist, dass die Zeichenfolge eine Ganzzahl ist.
Verwendung:
Innerhalb Ihrer Hauptfunktion, Sie kann diese Funktion wie folgt integrieren:
<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>
Dadurch werden Wörter ausgegeben, die keine ganzen Zahlen sind, während numerische Eingaben ignoriert werden.
Das obige ist der detaillierte Inhalt vonWie kann festgestellt werden, ob ein C-String eine Ganzzahl darstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!