C++ Συνάρτηση συμβολοσειράς: strcpy(), strcat(), strlen(), strcmp()
⚡ Έξυπνη Σύνοψη
C++ Συναρτήσεις συμβολοσειράς όπως οι strcpy, strcat, strlen και strcmp επιτρέπουν στα προγράμματα να αντιγράφουν, να ενώνουν, να μετρούν και να συγκρίνουν κείμενο. Αυτός ο πόρος εξηγεί τι είναι μια συμβολοσειρά, πώς να δηλώνετε συμβολοσειρές C-style και std::string, να έχετε πρόσβαση στις τιμές τους και να εφαρμόζετε βασικές συναρτήσεις συμβολοσειράς με παραδείγματα.

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




