Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann festgestellt werden, ob ein C-String eine Ganzzahl darstellt?

Wie kann festgestellt werden, ob ein C-String eine Ganzzahl darstellt?

DDD
DDDOriginal
2024-11-07 04:17:02313Durchsuche

How to Determine if a C   String Represents an Integer?

Bestimmen, 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])) &amp;&amp; (s[0] != '-') &amp;&amp; (s[0] != '+'))) return false;

   char * p;
   strtol(s.c_str(), &amp;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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn