Όλα όσα πρέπει να γνωρίζετε για τις συμβολοσειρές στο C ++



Αυτό το άρθρο θα σας δώσει μια λεπτομερή και περιεκτική γνώση των συμβολοσειρών στο C ++ και θα παρέχει επίσης παραδείγματα διαφόρων λειτουργιών.

Ο όρος σημαίνει μια ταξινομημένη ακολουθία χαρακτήρων. Μια ακολουθία χαρακτήρων μπορεί να αναπαρασταθεί χρησιμοποιώντας ένα αντικείμενο μιας κλάσης στο C ++. Η τάξη που παρέχει έναν ορισμό για να το κάνει αυτό ονομάζεται κλάση String. Η κλάση συμβολοσειράς αποθηκεύει τους χαρακτήρες ως ακολουθία byte με τη λειτουργικότητα που επιτρέπει την πρόσβαση στον χαρακτήρα ενός byte. Στο C ++ οι οριοθέτες που περικλείουν είναι διπλά εισαγωγικά. Σε αυτό το άρθρο 'Strings in C ++' θα συζητήσω τα ακόλουθα θέματα:

Διαφορά σειράς σειράς χαρακτήρων και χαρακτήρων

Κατηγορία χορδών Σειρά χαρακτήρων
String class είναι μια κλάση που ορίζει αντικείμενα που μπορούν να αναπαρασταθούν ως ροή χαρακτήρωνΟ πίνακας χαρακτήρων είναι απλά ένας πίνακας χαρακτήρων.
Στην περίπτωση των συμβολοσειρών, η μνήμη κατανέμεται δυναμικά, έτσι περισσότερη μνήμη μπορεί να εκχωρηθεί κατά το χρόνο εκτέλεσης κατά παραγγελίαΤο μέγεθος του πίνακα χαρακτήρων πρέπει να κατανέμεται στατικά έτσι δεν μπορεί να εκχωρηθεί περισσότερη μνήμη στο χρόνο εκτέλεσης, εάν απαιτείται
Η κλάση συμβολοσειράς καθορίζει έναν αριθμό λειτουργιών που επιτρέπουν πολλαπλές λειτουργίες σε χορδές.Ο πίνακας χαρακτήρων δεν προσφέρει πολλές ενσωματωμένες λειτουργίες για χειρισμό συμβολοσειρών
Οι συμβολοσειρές είναι πιο αργές σε σύγκριση με την εφαρμογή από τον πίνακα χαρακτήρων.Η εφαρμογή ενός πίνακα χαρακτήρων είναι γρηγορότερα.

Δηλώστε και αρχικοποιήστε μια συμβολοσειρά στο C ++

strings-in-c++Η προετοιμασία της συμβολοσειράς στο C ++ είναι πολύ απλή !. Μπορούμε να χρησιμοποιήσουμε οποιαδήποτε από τις ακόλουθες μεθόδους.





χρησιμοποιώντας το namespace std string std_string

ή

std :: string std_string
#include χρησιμοποιώντας namespace std int main () {char ch [12] = {'H', 'e', ​​'l', 'l', 'o', '', 'b', 'y', '' , 'c', 'h', ''} string st = 'Hello by st' std :: string std_st = 'Γεια σας από std_st' cout<< ch << endl cout << st << endl cout << std_st << endl return 0 }

Παραγωγή:



Γεια σας από ch Γεια σας από st Hello από std_st

Σε αυτό το παράδειγμα, έχουμε δείξει τόσο τον πίνακα χαρακτήρων (ch) όσο και τη συμβολοσειρά clμεθόδους προετοιμασίας ass (st και std_st). Αρχικά, χρησιμοποιήσαμε τη μέθοδο πίνακα χαρακτήρων καθορίζοντας έναν πίνακα χαρακτήρων ch [12] που περιέχει 12 στοιχεία και τελειώνει με έναν μηδενικό χαρακτήρα. Στο δεύτερο μέρος, χρησιμοποιήσαμε μια μέθοδο κλάσης συμβολοσειρών.

Λειτουργίες σε χορδές στο C ++

Το πλεονέκτημα της χρήσης κλάσης συμβολοσειρών είναι ότι υπάρχουν πολλές ενσωματωμένες συναρτήσεις στο C ++ για να τις χειριστείτε. Αυτό καθιστά τον προγραμματισμό εύκολο και αποτελεσματικό. Ας αναλάβουμε ορισμένες σημαντικές λειτουργίες χειρισμού συμβολοσειρών και να τις κατανοήσουμε εξετάζοντας μερικά παραδείγματα.

Μέγεθος συμβολοσειράς: Και οι δύο μέθοδοι μεγέθους () και μήκους () μπορούν να χρησιμοποιηθούν για την επιστροφή του μεγέθους του αντικειμένου.



τι είναι αμετάβλητο αντικείμενο στην Java
κόστος<< st.length() <

Παραγωγή:

11 11

Συνδυασμός συμβολοσειρών: Μπορούμε να συνενώσουμε δύο ή περισσότερες χορδές απλά χρησιμοποιώντας το + χειριστή μεταξύ τους

string new_string = st + 'και' + std_st cout<< new_string <

Παραγωγή:

Γεια σας από st και Γεια σας από std_st

Προσάρτημα συμβολοσειρών: Η συνάρτηση μέλους κλάσης .append (string) μπορεί να χρησιμοποιηθεί για συνένωση και προσθήκη μιας συμβολοσειράς σε μια συγκεκριμένη θέση χαρακτήρα στη συμβολοσειρά. Εάν ένας προγραμματιστής βάζει str.append (str1, p, n), τότε σημαίνει ότι n αριθμός χαρακτήρων από τη θέση p στο string str1 θα προσαρτηθεί στο τέλος του str.

string str = 'Μου αρέσει να μαθαίνω' string str1 = 'Python, C ++ ή C' str .append (str1, 8, 3) cout<< str << endl

Παραγωγή:

τι είναι μια μεταβλητή παρουσίας
Μου αρέσει να μαθαίνω C ++

Αναζήτηση συμβολοσειρών: Μπορούμε να χρησιμοποιήσουμε τη λειτουργία μέλους εύρεσης () για να βρούμε την πρώτη εμφάνιση μιας συμβολοσειράς μέσα σε μια άλλη. Το εύρημα () θα αναζητήσει τη βελόνα χορδών μέσα στο άχυρο χορδής ξεκινώντας από τη θέση pos και θα επιστρέψει τη θέση της πρώτης εμφάνισης της βελόνας. Η συνάρτηση rfind () λειτουργεί παρόμοια, εκτός αν επιστρέφει την τελευταία εμφάνιση της συμβολοσειράς που πέρασε.

string haystack = 'Γεια σου Κόσμος!' κορδόνι βελόνας = 'o' cout<< haystack.find(needle)<

Παραγωγή:

4 4 7 4294967295

Η πρώτη εντολή cout θα εκτυπώσει απλά το '4' που είναι το ευρετήριο της πρώτης εμφάνισης του 'o' στη συμβολοσειρά χόρτου. Εάν θέλουμε το 'o' στο 'World', πρέπει να τροποποιήσουμε το 'pos' για να ξεπεράσουμε την πρώτη εμφάνιση. Το haystack.find (βελόνα, 4) θα επέστρεφε ξανά το 4, ενώ το haystack.find (βελόνα, 5) θα έδινε το 7. Εάν δεν βρεθεί το υπόστρωμα, βρείτε το () επιστρέφει std :: string :: npos

Το Npos είναι μια ειδική τιμή ίση με τη μέγιστη τιμή που αντιπροσωπεύεται από τον τύπο size_type. Εδώ είναι 4294967295. Γενικά, χρησιμοποιείται είτε ως το τέλος της ένδειξης συμβολοσειράς από τις συναρτήσεις που αναμένουν ένα ευρετήριο συμβολοσειρών είτε ως ένδειξη σφάλματος από τις συναρτήσεις που επιστρέφουν ένα ευρετήριο συμβολοσειρών.

μεταβείτε στη δήλωση c ++

Αυτός ο απλός κώδικας αναζητά μια συμβολοσειρά για όλες τις εμφανίσεις του 'C ++' στο str2 και εκτυπώνει τις θέσεις τους:

string str2 = 'Το C ++ είναι μια αντικειμενοστρεφής γλώσσα προγραμματισμού και περιλαμβάνει τάξεις, κληρονομικότητα, πολυμορφισμό, αφαίρεση δεδομένων και ενθυλάκωση. Το C ++ επιτρέπει χειρισμό εξαιρέσεων και υπερφόρτωση λειτουργιών που δεν είναι δυνατές στο C.C ++ είναι μια ισχυρή, αποτελεσματική και γρήγορη γλώσσα. ' για (string :: size_type i = 0, tfind (tfind = wikistr.find ('C ++', i))! = string :: npos i = tfind + 1) {std :: cout<< 'Found occurrence of 'C++' at position ' << tfind << std::endl }

Παραγωγή:

Βρέθηκε εμφάνιση του 'C ++' στη θέση 0 Βρέθηκε εμφάνιση του 'C ++' στη θέση 132 Βρέθηκε εμφάνιση του 'C ++' στη θέση 217
# συμπερίληψη χρησιμοποιώντας το namespace std class base {public: void fun_1 () {cout<< 'base class function 1n' } virtual void fun_2() { cout << 'base class function 2n' } virtual void fun_3() { cout << 'base class function 3n' } virtual void fun_4() { cout << 'base class function 4n' } } class derived : public base { public: void fun_1() { cout << 'derived class function 1n' } void fun_2() { cout << 'derived class function 2n' } void fun_4(int x) { cout fun_2 () // Late binding (RTP) ptr-> fun_3 () // Late binding (RTP) ptr-> fun_4 () // Πρόωρη δέσμευση αλλά αυτή η κλήση συνάρτησης είναι // παράνομη (παράγει σφάλμα) επειδή ο δείκτης // είναι του βασικού τύπου και η συνάρτηση είναι // προερχόμενη κλάση // p-> fun_4 (5)}

Παραγωγή:

συνάρτηση βασικής κλάσης 1 συνάρτηση παραγόμενης κλάσης 2 συνάρτηση βασικής κλάσης 3 συνάρτηση βασικής κλάσης 4

Με αυτό, καταλήγουμε σε αυτό το άρθρο σχετικά με τις συμβολοσειρές στο C ++. Ελπίζω να έχετε κατανοήσει τις διάφορες λειτουργίες που μπορούν να εκτελεστούν σε αυτό. Αν θέλετε να μάθετε περισσότερα, δείτε το Java Training από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το Edureka's Το μάθημα κατάρτισης και πιστοποίησης έχει σχεδιαστεί για να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java, μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.