C++ Συνάρτηση συμβολοσειράς: strcpy(), strcat(), strlen(), strcmp() Παράδειγμα
Τι είναι ένα String;
Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων. ΕΝΑ C++ Το string είναι αντικείμενο της κλάσης std::string. Οι χαρακτήρες είναι αποθηκευμένες ακολουθίες byte με πρόσβαση σε ένα μόνο byte χαρακτήρων.
C++ Οι συμβολοσειρές εκχωρούν μνήμη δυναμικά. Μπορεί να εκχωρηθεί περισσότερη μνήμη στη συμβολοσειρά κατά τη διάρκεια του χρόνου εκτέλεσης, εάν χρειάζεται. Δεδομένου ότι δεν υπάρχει προκατανομή μνήμης, δεν υπάρχει σπατάλη μνήμης. Μπορούμε να εκτελέσουμε διάφορες λειτουργίες σε συμβολοσειρές, όπως συγκρίσεις, συνένωση, μετατροπή κ.λπ.
Δήλωση συμβολοσειρών
C++ υποστηρίζει δύο τύπους δηλώσεων συμβολοσειράς:
- Συμβολοσειρά χαρακτήρων σε στυλ C
- Τύπος κλάσης χορδών
Συμβολοσειρά χαρακτήρων C-Style
Αυτός ο τύπος δήλωσης συμβολοσειράς εισήχθη στο Γλώσσα προγραμματισμού C. C++ συνεχίζει να το υποστηρίζει. Είναι απλώς ένας μονοδιάστατος πίνακας χαρακτήρων που τερματίζεται με έναν μηδενικό χαρακτήρα (\0). Μια συμβολοσειρά με μηδενικό τερματισμό έχει χαρακτήρες που συνθέτουν τη συμβολοσειρά και στη συνέχεια ακολουθείται από ένα μηδενικό.
Εξετάστε τη δήλωση συμβολοσειράς που δίνεται παρακάτω:
char name[5] = {'J', 'o', 'h', 'n', '\0'};
Η παραπάνω δήλωση δημιουργεί μια συμβολοσειρά που σχηματίζει τη λέξη John. Η λέξη έχει 4 χαρακτήρες, αλλά η συμβολοσειρά έχει μέγεθος 5. Ο επιπλέον χώρος επιτρέπει τη διατήρηση του μηδενικού χαρακτήρα.
Χρησιμοποιώντας τον κανόνα αρχικοποίησης πίνακα, μπορούμε να γράψουμε την παραπάνω δήλωση ως εξής:
char name[] = "John";
Σημειώστε ότι δεν χρειάζεται να τοποθετήσετε τον μηδενικό χαρακτήρα στο τέλος της σταθεράς συμβολοσειράς. Ο C++ ο μεταγλωττιστής θα τοποθετήσει αυτόματα το '\0' στο τέλος της συμβολοσειράς κατά την προετοιμασία του πίνακα.
std::string
Το πρότυπο C++ Η βιβλιοθήκη παρέχει την κλάση συμβολοσειράς που υποστηρίζει διάφορες λειτουργίες συμβολοσειράς. Είναι γραμμένο ως std::string.
Για να χρησιμοποιήσουμε αυτήν την κλάση, πρέπει πρώτα να την συμπεριλάβουμε στον χώρο εργασίας μας χρησιμοποιώντας τον προεπεξεργαστή #include όπως φαίνεται παρακάτω:
#include<string>
Στη συνέχεια, μπορούμε να δηλώσουμε τη συμβολοσειρά μας χρησιμοποιώντας τη λέξη-κλειδί συμβολοσειράς. Για παράδειγμα:
string name = "John";
Η παραπάνω δήλωση θα δημιουργήσει μια συμβολοσειρά με το όνομα που θα κρατά την τιμή John.
Πρόσβαση στις τιμές συμβολοσειράς
In C++, μπορούμε να έχουμε πρόσβαση στις τιμές συμβολοσειράς χρησιμοποιώντας το όνομα συμβολοσειράς. Για παράδειγμα:
#include <iostream> using namespace std; int main() { char name[5] = { 'J', 'o', 'h', 'n', '\0' }; cout << "String value is: "; cout << name << endl; return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλαμβανομένου του αρχείου κεφαλίδας iostream στον κώδικά μας. Θα μας επιτρέψει να διαβάζουμε και να γράφουμε στην κονσόλα.
- Συμπεριλαμβανομένου του χώρου ονομάτων std ώστε να χρησιμοποιείτε τις κλάσεις και τις συναρτήσεις του χωρίς να τον καλείτε.
- Κλήση της συνάρτησης main() εντός της οποίας πρέπει να προστεθεί η λογική του προγράμματος. Το { επισημαίνει την αρχή του σώματος της συνάρτησης main().
- Δηλώνοντας μια σειρά χαρακτήρων και δίνοντάς της το όνομα. Η συμβολοσειρά θα αποθηκεύσει την τιμή John. Ο επιπλέον χώρος θα αποθηκεύσει τον μηδενικό χαρακτήρα.
- Εκτύπωση κειμένου στην κονσόλα.
- Εκτύπωση της τιμής του ονόματος συμβολοσειράς στην κονσόλα.
- Η συνάρτηση main() θα πρέπει να επιστρέψει μια τιμή εάν το πρόγραμμα εκτελείται σωστά.
- Τέλος του σώματος της συνάρτησης main().
Εδώ είναι ένα άλλο παράδειγμα χρησιμοποιώντας το C++ τυπική κατηγορία χορδών:
#include <iostream> #include <string> using namespace std; int main() { string name = "Guru99"; cout << "The name is : " << name << endl; return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλαμβανομένου του αρχείου κεφαλίδας iostream στον κώδικά μας. Θα μας επιτρέψει να διαβάζουμε και να γράφουμε στην κονσόλα.
- Συμπερίληψη της τυπικής κλάσης συμβολοσειράς στον κώδικά μας.
- Συμπεριλαμβανομένου του χώρου ονομάτων std ώστε να χρησιμοποιείτε τις κλάσεις και τις συναρτήσεις του χωρίς να τον καλείτε.
- Κλήση της συνάρτησης main() εντός της οποίας πρέπει να προστεθεί η λογική του προγράμματος. Το { επισημαίνει την αρχή του σώματος της συνάρτησης main().
- Δηλώνοντας μια συμβολοσειρά και δίνοντάς της το όνομα. Η συμβολοσειρά θα αποθηκεύσει την τιμή Guru99.
- Εκτύπωση της τιμής του ονόματος συμβολοσειράς μαζί με κάποιο κείμενο στην κονσόλα.
- Η συνάρτηση main() θα πρέπει να επιστρέψει μια τιμή εάν το πρόγραμμα εκτελείται σωστά.
- Τέλος του σώματος της συνάρτησης main().
Λειτουργίες συμβολοσειράς σε C++
Συχνά θα θέλετε να χειριστείτε χορδές. C++ παρέχει ένα ευρύ φάσμα λειτουργιών που μπορείτε να χρησιμοποιήσετε για αυτό. Αυτές οι συναρτήσεις ορίζονται στην κλάση CString, επομένως, πρέπει να τις συμπεριλάβουμε στον κώδικά μας για να χρησιμοποιήσουμε τις συναρτήσεις. Ας συζητήσουμε μερικά:
strcpy()
Αυτή είναι η συνάρτηση αντιγραφής συμβολοσειράς. Αντιγράφει μια συμβολοσειρά σε μια άλλη συμβολοσειρά.
Σύνταξη:
strcpy(string1, string2);
Οι δύο παράμετροι της συνάρτησης, string1 και string2, είναι συμβολοσειρές. Η συνάρτηση θα αντιγράψει τη συμβολοσειρά2 στη συμβολοσειρά1.
strcat()
Αυτή είναι η συνάρτηση σύνδεσης συμβολοσειρών. Συνδέει χορδές.
Σύνταξη:
strcat(string1, string2);
Οι δύο παράμετροι της συνάρτησης, string1 και string2 είναι οι συμβολοσειρές που πρέπει να συνενωθούν. Η παραπάνω συνάρτηση θα συνδέσει τη συμβολοσειρά2 στο τέλος της συμβολοσειράς1.
strlen()
Αυτή είναι η συνάρτηση μήκους συμβολοσειράς. Επιστρέφει το μήκος της συμβολοσειράς που της έχει μεταβιβαστεί ως όρισμα.
Σύνταξη:
strnlen(string1)
Η παράμετρος string1 είναι το όνομα της συμβολοσειράς της οποίας το μήκος πρόκειται να καθοριστεί. Η παραπάνω συνάρτηση θα επιστρέψει το μήκος της συμβολοσειράς1.
strcmp()
Αυτή είναι η συνάρτηση σύγκρισης συμβολοσειρών. Χρησιμοποιείται για σύγκριση συμβολοσειρών.
Σύνταξη:
strcmp(string1, string2);
Η παραπάνω συνάρτηση θα επιστρέψει 0 εάν οι συμβολοσειρές string1 και string2 είναι παρόμοιες, λιγότερο από 0 εάν string1 συμβολοσειρά 2.
Παράδειγμα:
Το ακόλουθο παράδειγμα δείχνει πώς να χρησιμοποιήσετε τις παραπάνω συναρτήσεις συμβολοσειράς:
#include <iostream> #include <cstring> using namespace std; int main() { char name1[10] = "Guru99"; char name2[10] = "John"; char name3[10]; int len; strcpy(name3, name1); cout << "strcpy( name3, name1) : " << name3 << endl; strcat(name1, name2); cout << "strcat( name1, name2): " << name1 << endl; len = strlen(name1); cout << "strlen(name1) : " << len << endl; return 0; }
Παραγωγή:
Εδώ είναι ένα στιγμιότυπο οθόνης του κώδικα:
Επεξήγηση κώδικα:
- Συμπεριλαμβανομένου του αρχείου κεφαλίδας iostream στον κώδικά μας. Θα μας επιτρέψει να διαβάζουμε και να γράφουμε στην κονσόλα.
- Συμπερίληψη της τυπικής κλάσης CString στον κώδικά μας.
- Συμπεριλαμβανομένου του χώρου ονομάτων std ώστε να χρησιμοποιείτε τις κλάσεις και τις συναρτήσεις του χωρίς να τον καλείτε.
- Κλήση της συνάρτησης main() εντός της οποίας πρέπει να προστεθεί η λογική του προγράμματος. Το { επισημαίνει την αρχή του σώματος της συνάρτησης main().
- Δηλώνοντας μια συμβολοσειρά 10 χαρακτήρων και δίνοντάς της το όνομα1. Η συμβολοσειρά θα αποθηκεύσει την τιμή Guru99.
- Δηλώνοντας μια συμβολοσειρά 10 χαρακτήρων και δίνοντάς της το όνομα2. Η συμβολοσειρά θα αποθηκεύσει την τιμή John.
- Δηλώνοντας μια συμβολοσειρά 10 χαρακτήρων και δίνοντάς της το όνομα3.
- Δηλώνοντας ένα ακέραια μεταβλητή ονόματι λεν.
- Αντιγραφή του ονόματος συμβολοσειράς1 στο όνομα συμβολοσειράς3.
- Εκτύπωση της τιμής του ονόματος συμβολοσειράς1 μαζί με κάποιο κείμενο στην κονσόλα. Θα πρέπει να εκτυπώσει Guru99.
- Συνδέοντας τις συμβολοσειρές name2 στο τέλος της συμβολοσειράς name1. Η τιμή του name1 είναι τώρα Guru99John.
- Εκτύπωση της τιμής του ονόματος συμβολοσειράς1 μαζί με κάποιο κείμενο στην κονσόλα. Θα πρέπει να εκτυπώσει τον Guru99John
- Προσδιορισμός του μήκους της συμβολοσειράς με το όνομα name1 και εκχώρηση της τιμής του μήκους στη μεταβλητή len.
- Εκτύπωση της τιμής της μεταβλητής len μαζί με κάποιο άλλο κείμενο στην κονσόλα.
- Η συνάρτηση main() θα πρέπει να επιστρέψει μια τιμή εάν το πρόγραμμα εκτελείται σωστά.
- Τέλος του σώματος της συνάρτησης main().
Σύνοψη
- Μια συμβολοσειρά είναι μια ακολουθία χαρακτήρων.
- Οι συμβολοσειρές ανήκουν στην τυπική κατηγορία συμβολοσειρών in C++.
- Μπορούμε να δηλώσουμε συμβολοσειρές χρησιμοποιώντας τη συμβολοσειρά χαρακτήρων τύπου C ή την τυπική κλάση συμβολοσειρών.
- Η συνάρτηση strcpy() αντιγράφει μια συμβολοσειρά σε μια άλλη.
- Η συνάρτηση strcat() συνενώνει δύο συμβολοσειρές.
- Η συνάρτηση strlen() επιστρέφει το μήκος μιας συμβολοσειράς.
- Η συνάρτηση strcmp() συγκρίνει δύο συμβολοσειρές.