Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Programm zur Übergabe einer Zeichenfolge an eine Funktion

C++-Programm zur Übergabe einer Zeichenfolge an eine Funktion

PHPz
PHPznach vorne
2023-08-26 12:17:121229Durchsuche

C++-Programm zur Übergabe einer Zeichenfolge an eine Funktion

Jede Programmiersprache, die Funktionen verwendet, verfügt über Code, der einfacher, modularer und beim Debuggen einfacher zu ändern ist. Funktionen sind ein sehr nützlicher Teil des modularen Codes. Funktionen können Parameter akzeptieren und bestimmte Operationen mit ihnen ausführen. Wie andere primitive Datentypen können wir auch Objekttypen oder Arrays als Parameter übergeben. In diesem Artikel erfahren Sie, wie Sie Daten vom Typ String als Funktionsparameter in C++ übergeben.

Übergeben Sie Parameter ähnlich wie C++-Strings an Funktionen

C++ unterstützt stärkere String-Objekte, bei denen es sich tatsächlich um eine Klasse mit verschiedenen zugehörigen Memberfunktionen handelt. Die Übergabe eines String-Objekts als Argument ähnelt der Übergabe normaler primitiver Datentypen.

Syntax

<return type> function_name ( string argument1, string argument2, … ) {
   // function body
}

Im folgenden Beispiel sehen wir ein Programm, das überprüft, ob eine bestimmte Zeichenfolge ein Palindrom ist oder nicht. Es wird zwei Funktionen geben, eine wird die Zeichenfolge umkehren und eine andere prüft, ob die Zeichenfolge ein Palindrom ist oder nicht der Algorithmus und die entsprechende C++-Implementierung.

Algorithmus

  • Definieren Sie eine Funktion reverse(), diese benötigt einen String s
  • n := Boden von (Länge von s / 2)
  • für i im Bereich von 0 bis n/2;
    • temp := s[i]
    • s[i] := s[ n - i - 1 ]
    • s[ n - i - 1 ] := temp
  • Ende für
  • return s
  • Ende der Reverse()-Funktion
  • Definieren Sie eine Funktion isPalindrome(), die den Parameter s akzeptiert
  • revS := Rufen Sie reverse() auf, indem Sie s übergeben, um die Zeichenfolge s umzukehren
  • Wenn s und revS gleich sind, dann
    • return True
  • sonst
    • falsch zurückgeben
  • Ende wenn
  • isPalindrome()-Funktion endet
  • Die chinesische Übersetzung von
Beispiel

lautet:

Beispiel

#include <iostream>
#include <sstream>

using namespace std;
string reverse( string s ) {
   char temp;
   int n = s.length();
   for( int i = 0; i < n / 2; i++ ) {
      temp = s[i];
      s[i] = s[ n - i - 1 ];
      s[ n - i - 1 ] = temp;
   }
   return s;
}

string isPalindrome( string s ) {
   string revS = reverse( s );
   if( s == revS ) {
      return "True";
   }
   else {
      return "False";
   }
}

int main()
{
   cout << "Is "racecar" a palindrome? " << isPalindrome( "racecar" ) << endl;
   cout << "Is "abcdef" a palindrome? " << isPalindrome( "abcdef" ) << endl;
   cout << "Is "madam" a palindrome? " << isPalindrome( "madam" ) << endl;
   cout << "Is "sir" a palindrome? " << isPalindrome( "sir" ) << endl;
}

Ausgabe

Is "racecar" a palindrome? True
Is "abcdef" a palindrome? False
Is "madam" a palindrome? True
Is "sir" a palindrome? False

Übergabe eines C-ähnlichen Zeichenarrays an eine Funktion

Da C++ fast alles unterstützt, was von C unterstützt wird, können wir Zeichenfolgen auch mithilfe eines Zeichenarrays wie C definieren. Um C-ähnliche Zeichenfolgen an eine Funktion zu übergeben, muss diese ein Zeichenarray oder einen Zeichenzeiger auf die Basisadresse der Funktion übergeben Zeichenfolge. Die Syntax ist wie folgt: −

Syntax

(Zeichenzeiger verwenden)

<return type> function_name ( char* <string variable>, … ) {
   // function body
}

Syntax

(Zeichenfeld verwenden)

<return type> function_name ( char <string variable>[], … ) {
   // function body
}

Sehen wir uns das gleiche Beispiel der Palindromprüfung mit Zeichenarray-Übergabe an. Hier ändert die Funktion „reverse()“ das Array, daher müssen wir diese Zeichenfolge als Zeichenarray übergeben, nicht als Zeichenzeiger. Und isPalindrome() prüft nur ob die Zeichenfolge mit der umgekehrten Zeichenfolge übereinstimmt, sodass sie einen Zeichenzeiger oder ein Zeichenarray annehmen kann und der Effekt derselbe ist. Der Algorithmus ist ähnlich, sodass wir direkt in den Code eintreten.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

void reverse( char s[] ) {
   char temp;
   int n = strlen( s );
   for( int i = 0; i < n / 2; i++ ) {
      temp = s[i];
      s[i] = s[ n - i - 1 ];
      s[ n - i - 1 ] = temp;
   }
}

string isPalindrome( char* s ) {
   char* sRev = (char*) malloc( strlen(s) );
   strcpy( sRev, s );
   reverse( sRev );
   if( strcmp( sRev, s ) == 0 ) {
      return "True";
   }
   else {
      return "False";
   }
}

int main()
{
   string s = "racecar";
   cout << "Is "racecar" a palindrome? " << isPalindrome( const_cast<char*> (s.c_str()) ) << endl; 
   s = "abcdef";

   cout << "Is "abcdef" a palindrome? " << isPalindrome( const_cast<char*> (s.c_str()) ) << endl; 
   s = "madam";

   cout << "Is "madam" a palindrome? " << isPalindrome( const_cast<char*> (s.c_str()) ) << endl; 
   s = "sir";

   cout << "Is "sir" a palindrome? " << isPalindrome( const_cast<char*> (s.c_str()) ) << endl;
}

Ausgabe

Is "racecar" a palindrome? True
Is "abcdef" a palindrome? False
Is "madam" a palindrome? True
Is "sir" a palindrome? False

In diesem Beispiel sehen wir, dass es mehrere Schritte zum Anpassen von C-Stil-Strings in C++ gibt. Verwenden Sie für Zeichenfolgen im C-Stil die cstring-Bibliothek für Länge, Zeichenfolgenvergleich und andere Vorgänge. Um von einem C++-String in einen C-String zu konvertieren, müssen Sie die Funktion c_str() verwenden, diese Funktion gibt jedoch const char* zurück. Unsere Funktion akzeptiert jedoch nur Daten vom Typ char*. In diesem Fall müssen wir const_cast verwenden, um den Wert in den Typ char* zu konvertieren.

Fazit

Funktion kann sowohl primitive Datentypen als auch Arrays, Objekttypen usw. akzeptieren. Wenn wir Zeichenfolgen verwenden, handelt es sich in C++ um Objekttypen und in C um Zeichenarray-Typen. Da C++ aber auch die C-Syntax unterstützt, ist sie auch in C++ gültig. Die Übergabe eines String-Objekts ist einfach, die Übergabe eines Zeichenarrays erfordert jedoch besondere Aufmerksamkeit und die Einhaltung einiger strenger Schritte. Zeichenfolgen im C-Stil können im Array-Format oder als Zeichenzeiger übergeben werden. Wenn wir wissen, dass die Funktion die Zeichenfolge selbst ändern wird, müssen wir die Zeichenfolge als Zeichenarray übergeben, andernfalls ist die Änderung der Zeichenfolge über einen Zeiger nicht zulässig. Wenn nur Zeichenfolgen verwendet werden, können wir sie mithilfe von Zeigern oder Zeichenarrays übergeben, und der Effekt ist derselbe. In diesem Fall ist die Übergabe über ein Zeichenarray jedoch sinnvoll, da dadurch unbeabsichtigte Aktualisierungen der Zeichenfolge verhindert werden.

Das obige ist der detaillierte Inhalt vonC++-Programm zur Übergabe einer Zeichenfolge an eine Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen