strings c with examples
Μια εντατική ματιά στα βασικά των χορδών στο C ++.
Σε αυτήν τη σειρά C ++, μέχρι τώρα, έχουμε συζητήσει ως επί το πλείστον αριθμητικούς πίνακες στο C ++. Σε αυτό το σεμινάριο, θα συζητήσουμε τη χειραγώγηση με πίνακες χαρακτήρων που απλώς ονομάζουμε 'Strings'.
Ο πίνακας χαρακτήρων είναι κυρίως μια συμβολοσειρά τύπου C που υποστηρίζει το C ++. Εκτός από τις συστοιχίες χαρακτήρων τύπου C, το C ++ υποστηρίζει επίσης μια κλάση συμβολοσειρών 'std :: string'. Επιπλέον, σε αυτό το σεμινάριο, θα συζητήσουμε και τους δύο τύπους συμβολοσειρών, καθώς και τη διαφορά μεταξύ τους και για τον προγραμματισμό κάθε τύπου στο C ++.
=> Προσέξτε την πλήρη λίστα των μαθημάτων C ++ σε αυτήν τη σειρά.
Τι θα μάθετε:
Πίνακες χαρακτήρων (χορδές τύπου C)
Η συμβολοσειρά c-style είναι ένας πίνακας χαρακτήρων που τερματίζεται με έναν μηδενικό χαρακτήρα ' 0'. Ως εκ τούτου μπορούμε να ορίσουμε έναν πίνακα τύπου char και τις διαστάσεις ή το μέγεθος των συστοιχιών και στη συνέχεια μπορούμε να το αρχικοποιήσουμε σε μια συμβολοσειρά ή μια σειρά χαρακτήρων.
Σημειώστε ότι είναι ο μεταγλωττιστής που τερματίζει μια συμβολοσειρά με μηδενικό χαρακτήρα, οπότε αν ξεκινήσουμε τον πίνακα χαρακτήρων με μια συμβολοσειρά (στο διπλό απόσπασμα ''), τότε πρέπει να αφήσουμε επιπλέον χώρο για τον μηδενικό χαρακτήρα, δηλώνοντας το μέγεθος ενός πίνακα .
Ας πάρουμε μερικά παραδείγματα δήλωσης και αρχικοποίησης συστοιχιών χαρακτήρων.
char firstStr() = 'This is Cstyle string'; char secStr(100) = {'s','o','f','t','w','a','r','e',' ','t','e','s','t','i','n','g',' ','h','e','l','p',' '}; char thirdStr() = {'h','e','l','l','o',' '};
Όλοι οι παραπάνω ορισμοί είναι έγκυροι ορισμοί συμβολοσειράς τύπου C στο C ++. Σημειώστε ότι μπορούμε είτε να δηλώσουμε το πραγματικό μέγεθος είτε να αφήσουμε το μέγεθος κενό ώστε ο μεταγλωττιστής να μπορεί να φιλοξενήσει το μέγεθος ανάλογα με τη συμβολοσειρά που ξεκινήσαμε.
Ας πάρουμε ένα Παράδειγμα ανάγνωσης και γραφής πίνακα χαρακτήρων σε C ++
Δίνεται παρακάτω ένα απλό πρόγραμμα που διαβάζει τη συμβολοσειρά χρησιμοποιώντας cin και εξάγει χρησιμοποιώντας cout.
#include #include using namespace std; int main() { char firstStr(100); cin>>firstStr; cout<<'you entered : '< Έξοδος 1:
SoftwareTestingHelp.com
εισαγάγατε: SoftwareTestingHelp.com
Έξοδος 2:
Αυτή είναι μια συμβολοσειρά τύπου C
εισαγάγατε: Αυτό
Αν συγκρίνουμε και τα δύο αποτελέσματα, βλέπουμε ότι όταν μπήκαμε στην πρώτη συμβολοσειρά 'SoftwareTestingHelp.com', εκτυπώθηκε ως έχει.
Αλλά στη δεύτερη έξοδο, αν και μπήκαμε στη συμβολοσειρά ως 'Αυτό είναι string τύπου C', η έξοδος ήταν μόνο 'Αυτό'.
Η διαφορά στην έξοδο οφείλεται στο γεγονός ότι, ο χειριστής του cin >> που χρησιμοποιείται για να διαβάσει τη συμβολοσειρά αντιμετωπίζεται ως λειτουργία «scanf» του C, η οποία διαβάζει μόνο μέχρι το διάστημα που συναντά. Ως εκ τούτου, το «cin with >>» είναι κατάλληλο για ανάγνωση συστοιχιών χαρακτήρων χωρίς χώρο.
Πόσο κοστίζει το σημείο πώλησης του Quickbooks
Ως εκ τούτου, ενώ αντιμετωπίστηκε ο δεύτερος χώρος εξόδου, η συνάρτηση cin το πήρε ως το τέλος της συμβολοσειράς και διάβαζε μόνο την πρώτη λέξη.
Προκειμένου να διαβάσει μια ολόκληρη σειρά χαρακτήρων, συμπεριλαμβανομένων των κενών, το C ++ χρησιμοποιεί τη συνάρτηση 'get'.
Ένα παράδειγμα προγράμματος που χρησιμοποιεί τη συνάρτηση get φαίνεται παρακάτω:
#include #include using namespace std; int main() { char firstStr(100); cin.get(firstStr,100); cout<<'you entered : '< Παραγωγή:
Αυτό είναι το λογισμικόTestinghelp.com
μπήκες: Αυτό είναι το λογισμικόTestinghelp.com
Όπως φαίνεται στο παράδειγμα , η συνάρτηση get του cin χρησιμοποιεί δύο ορίσματα. Το πρώτο όρισμα είναι η μεταβλητή πίνακα χαρακτήρων στην οποία πρόκειται να διαβαστεί η συμβολοσειρά, ενώ το δεύτερο όρισμα είναι το μέγιστο μέγεθος του πίνακα.
Οι χορδές τύπου C υποστηρίζουν επίσης πολλές λειτουργίες συμβολοσειρών που επιτρέπουν στους χρήστες να χειρίζονται τις χορδές. Αυτές οι λειτουργίες ορίζονται στην κεφαλίδα 'cstring'.
Παρουσιάζουμε έναν παρακάτω πίνακα που παραθέτει διάφορες συναρτήσεις συμβολοσειράς που μπορούν να χρησιμοποιηθούν για χειρισμό συμβολοσειρών τύπου C.
Οχι Λειτουργία Επιχειρήματα Περιγραφή ένας strcpy s1, s2 Αντιγράφει τη συμβολοσειρά s2 στη συμβολοσειρά s1 δύο στράτ s1, s2 Προσθέτει ή συνδυάζει τη συμβολοσειρά s2 στο τέλος της συμβολοσειράς s1 3 strlen s1 Επιστρέφει το μήκος της συμβολοσειράς s1 4 strcmp s1, s2 Οι επιστροφές 0: s1 και s2 είναι ίδιες
<0:s1 > 0: s1> s2 5 strchr s1, κεφ Επιστρέφει ένα δείκτη στην πρώτη εμφάνιση του χαρακτήρα ch στη συμβολοσειρά s1 και τη συμβολοσειρά από εκεί και μετά 6 στρ s1, s2 Επιστρέφει την πρώτη εμφάνιση της συμβολοσειράς s2 στη συμβολοσειρά s1
Το παρακάτω πρόγραμμα δείχνει τη χρήση ορισμένων από αυτές τις λειτουργίες στο C ++:
#include #include using namespace std; int main() { char firstStr(50) = 'This is softwareTestingHelp.com'; char secStr(50) = 'a testing platform'; int len = strlen(firstStr); cout<<'Length of firstStr : '< Παραγωγή:
Μήκος του πρώτου Str: 31
Αποτέλεσμα συμβολοσειράς (secStr): Δοκιμή λογισμικού
Σύγκριση firstStr και secStr: -31
Συνδυασμένο secStr: λογισμικό Δοκιμή για εσάς
Η πρώτη εμφάνιση του i στο firststr στο: s είναι softwareTestingHelp.com
Κατηγορία χορδών σε C ++
Η συμβολοσειρά σε C ++ που ορίζεται από την κλάση 'std :: string' είναι μια αναπαράσταση της ροής χαρακτήρων σε ένα αντικείμενο. Με άλλα λόγια, το String class είναι μια συλλογή από αντικείμενα συμβολοσειράς. Αυτή η κλάση συμβολοσειρών είναι μέρος του χώρου ονομάτων std και ορίζεται στην κεφαλίδα 'string.h'.
Ας συζητήσουμε μερικές από τις βασικές διαφορές μεταξύ της κλάσης συμβολοσειρών και του πίνακα χαρακτήρων.
- Ενώ οι πίνακες χαρακτήρων που συζητήσαμε παραπάνω κατανέμονται στατικά κατά τη διάρκεια του χρόνου μεταγλώττισης, οι συμβολοσειρές είναι αντικείμενα και ως εκ τούτου μπορούν να εκχωρηθούν δυναμικά.
- Καθώς οι συστοιχίες χαρακτήρων είναι στατικού χαρακτήρα, δεν μπορούν να συρρικνωθούν ή να επεκταθούν μόλις οριστούν. Ως εκ τούτου, εάν έχουμε έναν πίνακα χαρακτήρων μεγέθους 100, και το αρχικοποίησα με τη λέξη «Γεια», τότε ο υπόλοιπος χώρος χάνεται.
Char mystr (100) = 'Γεια';
Εδώ, οι υπόλοιπες 95 τοποθεσίες χαθούν.
Σε αντίθεση με αυτό, τα αντικείμενα συμβολοσειράς είναι δυναμικής φύσης και καταλαμβάνουν τον ακριβή χώρο για την τιμή.
- Οι συστοιχίες χαρακτήρων έχουν ταχύτερη απόδοση, ενώ οι χορδές είναι πιο αργές.
- Οι πίνακες χαρακτήρων έχουν λίγες λειτουργίες που μπορούν να τις χειριστούν. Η κλάση συμβολοσειράς έχει πολλές λειτουργίες, συμπεριλαμβανομένων των λειτουργιών επανάληψης.
Αυτές είναι μερικές από τις βασικές διαφορές μεταξύ του πίνακα χαρακτήρων και της κλάσης αντικειμένων συμβολοσειρών.
Στη συνέχεια, θα δούμε μερικά παραδείγματα κλάσης συμβολοσειρών μαζί με ορισμένες βασικές λειτουργίες που εκτελούνται σε αντικείμενα της κλάσης συμβολοσειρών.
Ένα παράδειγμα για δήλωση και αρχικοποίηση της κλάσης συμβολοσειρών.
#include #include using namespace std; int main() { string str='This is string object in C++'; cout<<'
String entered is :'<Στο παραπάνω παράδειγμα, έχουμε δηλώσει και αρχικοποιήσει ένα αντικείμενο συμβολοσειράς χρησιμοποιώντας την κλάση 'string'. Αυτό είναι ένα απλό παράδειγμα. Τώρα ας έχουμε ένα πρόγραμμα για να διαβάσουμε τη συμβολοσειρά από τον χρήστη και επίσης να δείξουμε μερικές λειτουργίες συμβολοσειρών, όπως η εύρεση του μήκους και η σύγκριση δύο χορδών.
#include #include using namespace std; int main() { string str; cout<<'Input the string
'; getline(cin,str); cout<<'
String entered is :'< Παραγωγή:
Εισαγάγετε τη συμβολοσειρά
Βοήθεια για δοκιμές λογισμικού
Η συμβολοσειρά που καταχωρίστηκε είναι: SoftwareTestingHelp
Το μήκος του κορδονιού είναι: 19
Δύο χορδές είναι ίσες
Νέο str1: SoftwareTestingHelp.com
νέο μήκος: 0
Στην παραπάνω εικόνα, χρησιμοποιήσαμε πολλές συναρτήσεις συμβολοσειράς για να χειριστούμε τις συμβολοσειρές. Αφού δηλώσουμε τη συμβολοσειρά χρησιμοποιούμε τη συνάρτηση 'getline' της κλάσης συμβολοσειρών για να διαβάσουμε τη συμβολοσειρά από την τυπική είσοδο.
Μόλις διαβάσουμε τη συμβολοσειρά, βρίσκουμε το μήκος της χρησιμοποιώντας τη συνάρτηση 'μήκος'. Εάν πρέπει να συγκρίνουμε δύο χορδές για να αξιολογήσουμε εάν είναι ίσες ή όχι, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση «σύγκριση» της κλάσης συμβολοσειρών. Εάν η συνάρτηση επιστρέψει 0, τότε οι δύο συμβολοσειρές είναι ίσες, διαφορετικά η συνάρτηση επιστρέφει μη μηδενική τιμή.
Ωστόσο, μια άλλη λειτουργία είναι να προσαρτήσετε μια άλλη συμβολοσειρά στο τέλος της υπάρχουσας συμβολοσειράς. Αυτή είναι η συνάρτηση 'append'. Σε αυτό το παράδειγμα, προσαρτάμε το '.com' στην ήδη υπάρχουσα συμβολοσειρά str1 με την τιμή 'softwaretesting'.
Η τελευταία συνάρτηση στο παράδειγμα είναι η καθαρή συνάρτηση που χρησιμοποιείται για την εκκαθάριση του περιεχομένου του αντικειμένου συμβολοσειράς επίκλησης. Σε αυτό το παράδειγμα, διαγράφουμε τα περιεχόμενα του αντικειμένου str έτσι ώστε το μήκος του να γίνεται 0.
συμπέρασμα
Σε αυτό το σεμινάριο, έχουμε καλύψει τον πίνακα χαρακτήρων που ονομάζεται επίσης συμβολοσειρές τύπου C μαζί με τα βασικά της κλάσης συμβολοσειρών. Η κλάση συμβολοσειράς έρχεται με περισσότερα βοηθητικά προγράμματα, όπως η κλάση επαναληπτικών καθώς είναι μια κατηγορία κοντέινερ.
Θα δούμε περισσότερα για την κλάση συμβολοσειρών και τις λειτουργίες της στα επερχόμενα μαθήματα STL !!
=> Επισκεφθείτε εδώ για να δείτε τη σειρά εκπαίδευσης C ++ για όλους.
Συνιστώμενη ανάγνωση
- Ταξινόμηση κελύφους σε C ++ με παραδείγματα
- Λειτουργίες ημερομηνίας και ώρας σε C ++ με παραδείγματα
- Java String με String Buffer και String Builder Tutorial
- Επιλογή Ταξινόμηση σε C ++ με παραδείγματα
- Λειτουργίες συμβολοσειράς Python
- Εκμάθηση Python DateTime με παραδείγματα
- Αποκοπή εντολής στο Unix με παραδείγματα
- 70+ ΚΑΛΥΤΕΡΑ C ++ Tutorials για να μάθουν τον προγραμματισμό C ++ ΔΩΡΕΑΝ