Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C++ untuk menghantar rentetan kepada berfungsi

Program C++ untuk menghantar rentetan kepada berfungsi

PHPz
PHPzke hadapan
2023-08-26 12:17:121209semak imbas

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
}

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;
    }
    

    Output

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

    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
    }
    

    Sintaks

    (Gunakan susunan aksara)

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

    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;
    }
    

    Output

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

    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!

    Kenyataan:
    Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam