Program C++ untuk menghantar rentetan kepada berfungsi

PHPz
Lepaskan: 2023-08-26 12:17:12
ke hadapan
1232 orang telah melayarinya

Program C++ untuk menghantar rentetan kepada berfungsi

Sebarang bahasa pengaturcaraan yang menggunakan fungsi mempunyai kod yang lebih ringkas, lebih modular dan lebih mudah untuk ditukar semasa menyahpepijat. Fungsi adalah bahagian yang sangat bermanfaat dalam kod modular. Fungsi boleh menerima parameter dan melaksanakan operasi tertentu padanya. Seperti jenis data primitif lain, kita juga boleh menghantar jenis objek atau tatasusunan sebagai parameter. Dalam artikel ini, kita akan melihat cara menghantar data jenis rentetan sebagai parameter fungsi dalam C++.

Lepaskan parameter yang serupa dengan rentetan C++ kepada fungsi

C++ menyokong objek rentetan yang lebih kuat yang sebenarnya merupakan kelas dengan fungsi ahli yang berbeza yang dikaitkan dengannya. Objek rentetan yang dihantar sebagai hujah adalah serupa dengan penghantaran jenis data primitif biasa

Sintaks

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

Dalam contoh berikut, kita akan melihat program untuk menyemak sama ada rentetan yang diberikan ialah palindrom atau tidak, satu akan membalikkan rentetan, dan satu lagi akan menyemak sama ada rentetan itu palindrom atau tidak algoritma dan pelaksanaan C++ yang sepadan.

Algoritma

    takrifkan fungsi terbalik(), ini akan mengambil rentetan s
  • n := lantai daripada (panjang s / 2)
  • untuk i antara 0 hingga n/2;
    • temp := s[i]
    • s[i] := s[ n - i - 1 ]
    • s[ n - i - 1 ] := temp
  • tamat untuk
  • kembali s
  • fungsi terbalik()
  • Tentukan fungsi ialahPalindrome() yang akan menerima parameter s
  • revS := panggil reverse() dengan melepasi s untuk membalikkan rentetan s
  • Jika s dan revS adalah sama, maka
    • kembali Benar
  • jika tidak
    • kembali Palsu
  • tamat jika
  • fungsi isPalindrome() tamat
  • Terjemahan bahasa Cina bagi
Contoh

ialah:

Contoh

#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;
}
Salin selepas log masuk

Output

Is "racecar" a palindrome? True
Is "abcdef" a palindrome? False
Is "madam" a palindrome? True
Is "sir" a palindrome? False
Salin selepas log masuk
Salin selepas log masuk

Melalukan tatasusunan aksara seperti C ke fungsi

Memandangkan C++ menyokong hampir semua yang disokong oleh C, kami juga boleh menentukan rentetan menggunakan tatasusunan aksara seperti C. Untuk menghantar rentetan seperti C kepada fungsi, ia mesti menghantar tatasusunan aksara atau penuding aksara ke alamat asas rentetan. Sintaks adalah seperti di bawah −

Sintaks

(Gunakan penunjuk aksara)

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

Sintaks

(Gunakan susunan aksara)

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

Mari kita lihat contoh semakan palindrom yang sama dengan hantaran tatasusunan aksara Di sini fungsi reverse() akan mengubah suai tatasusunan, jadi kita mesti menghantar rentetan ini sebagai tatasusunan aksara, bukan penunjuk aksara Dan isPalindrome() hanya akan menyemak sama ada rentetan itu sama dengan rentetan terbalik, jadi ia boleh mengambil penunjuk aksara atau tatasusunan aksara, dan kesannya akan sama Algoritmanya serupa jadi kami terus memasukkan kod.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

#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;
}
Salin selepas log masuk

Output

Is "racecar" a palindrome? True
Is "abcdef" a palindrome? False
Is "madam" a palindrome? True
Is "sir" a palindrome? False
Salin selepas log masuk
Salin selepas log masuk

Dalam contoh ini, kita melihat bahawa terdapat beberapa langkah untuk menyesuaikan rentetan gaya C dalam C++. Untuk rentetan gaya C, gunakan perpustakaan cstring untuk panjang, perbandingan rentetan dan operasi lain. Untuk menukar daripada rentetan C++ kepada rentetan C, anda perlu menggunakan fungsi c_str(), tetapi fungsi ini mengembalikan const char* Walau bagaimanapun, fungsi kami hanya menerima data jenis char*. Untuk kes ini, kita perlu menggunakan const_cast untuk menukar nilai kepada jenis char*.

Kesimpulan

Fungsi boleh menerima jenis data primitif serta tatasusunan, jenis objek, dsb. Apabila kita menggunakan rentetan, dalam C++ ia adalah jenis objek dan dalam C ia adalah jenis tatasusunan aksara. Tetapi kerana C++ juga menyokong sintaks C, ia juga sah dalam C++. Melepasi objek rentetan adalah mudah, tetapi menghantar tatasusunan aksara memerlukan perhatian khusus dan mengikuti beberapa langkah yang ketat. Rentetan gaya C boleh dihantar dalam format tatasusunan atau sebagai penunjuk aksara. Apabila kita tahu bahawa fungsi itu akan mengubah suai rentetan itu sendiri, kita mesti lulus rentetan sebagai tatasusunan aksara, jika tidak, mengubah suai rentetan daripada penunjuk tidak dibenarkan. Apabila rentetan hanya digunakan, kita boleh menghantarnya menggunakan penunjuk atau tatasusunan aksara, dan kesannya adalah sama. Tetapi dalam kes ini melalui tatasusunan aksara adalah baik kerana ia akan menghalang kemas kini yang tidak disengajakan kepada rentetan.

Atas ialah kandungan terperinci Program C++ untuk menghantar rentetan kepada berfungsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan