Πώς να χωρίσετε συμβολοσειρά σε C ++

How Split String C



Η εργασία με δεδομένα συμβολοσειράς είναι απαραίτητο μέρος κάθε γλώσσας προγραμματισμού. Μερικές φορές χρειάζεται να χωρίσουμε τα δεδομένα συμβολοσειράς για σκοπούς προγραμματισμού. Η συνάρτηση split () υπάρχει σε πολλές γλώσσες προγραμματισμού για τη διαίρεση της συμβολοσειράς σε πολλά μέρη. Δεν υπάρχει ενσωματωμένη συνάρτηση split () στο C ++ για διαίρεση συμβολοσειράς, αλλά υπάρχουν πολλοί πολλαπλοί τρόποι στο C ++ για την εκτέλεση της ίδιας εργασίας, όπως η χρήση getline () λειτουργία, strtok () λειτουργία, χρησιμοποιώντας εύρημα() και εξάλειψη() συναρτήσεις κλπ. Οι χρήσεις αυτών των συναρτήσεων για διαίρεση συμβολοσειρών στο C ++ έχουν εξηγηθεί σε αυτό το σεμινάριο.

Προαπαιτούμενο

Πριν ελέγξετε τα παραδείγματα αυτού του σεμιναρίου, πρέπει να ελέγξετε ότι ο μεταγλωττιστής g ++ είναι εγκατεστημένος ή όχι στο σύστημα. Εάν χρησιμοποιείτε Visual Studio Code, εγκαταστήστε τις απαραίτητες επεκτάσεις για να μεταγλωττίσετε τον πηγαίο κώδικα C ++ για να δημιουργήσετε τον εκτελέσιμο κώδικα. Εδώ, η εφαρμογή Visual Studio Code χρησιμοποιήθηκε για τη μεταγλώττιση και την εκτέλεση του κώδικα C ++.







Χωρίστε συμβολοσειρά χρησιμοποιώντας τη συνάρτηση getline ()

Η συνάρτηση getline () χρησιμοποιείται για την ανάγνωση χαρακτήρων από μια συμβολοσειρά ή ένα περιεχόμενο αρχείου έως ότου βρεθεί ένας συγκεκριμένος οριοθέτης ή διαχωριστής και αποθηκεύσει κάθε συμβολοσειρά ανάλυσης σε μια άλλη μεταβλητή συμβολοσειράς. Η συνάρτηση θα συνεχίσει την εργασία μέχρι να αναλυθεί ολόκληρο το περιεχόμενο της συμβολοσειράς ή του αρχείου. Η σύνταξη αυτής της συνάρτησης δίνεται παρακάτω.



Σύνταξη:



istream&getline(istream&είναι, συμβολοσειρά&str,απανθρακώνωντελίμ)?

Εδώ, η πρώτη παράμετρος, isstream, είναι το αντικείμενο από όπου θα εξαχθούν οι χαρακτήρες. Η δεύτερη παράμετρος είναι μια μεταβλητή συμβολοσειράς που θα αποθηκεύσει την εξαγόμενη τιμή. Η τρίτη παράμετρος χρησιμοποιείται για τον ορισμό του οριοθέτη που θα χρησιμοποιήσει για την εξαγωγή της συμβολοσειράς.





Δημιουργήστε ένα αρχείο C ++ με τον ακόλουθο κώδικα για να χωρίσετε μια συμβολοσειρά με βάση τον οριοθέτη χώρου χρησιμοποιώντας το getline () λειτουργία. Μια τιμή συμβολοσειράς πολλαπλών λέξεων έχει εκχωρηθεί σε μια μεταβλητή και το διάστημα έχει χρησιμοποιηθεί ως διαχωριστής. Μια διανυσματική μεταβλητή έχει δηλωθεί για να αποθηκεύει τις εξαγόμενες λέξεις. Στη συνέχεια, ο βρόχος ‘for’ έχει χρησιμοποιήσει για την εκτύπωση κάθε τιμής από τον διανυσματικό πίνακα.

// Συμπεριλάβετε τις απαραίτητες βιβλιοθήκες
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω

intκύριος()
{
// Ορίστε δεδομένα συμβολοσειράς που θα χωριστούν
ώρες::σειράstrData= «Μάθετε προγραμματισμό C ++»?
// Ορίστε δεδομένα περιεχομένου που θα λειτουργήσουν ως οριοθέτης
const απανθρακώνωδιαχωριστής= ''?
// Ορισμός της μεταβλητής δυναμικού πίνακα συμβολοσειρών
ώρες::διάνυσμαoutputArray?
// Δημιουργία ροής από τη συμβολοσειρά
ώρες::stringstreamstreamData(strData)?
/ *
Δηλώστε μεταβλητή συμβολοσειράς που θα χρησιμοποιηθεί
για αποθήκευση δεδομένων μετά το διαχωρισμό
* /

ώρες::σειράωρες?
/ *
Ο βρόχος θα επαναλάβει τα χωρισμένα δεδομένα και
εισαγάγετε τα δεδομένα στον πίνακα
* /

ενώ (ώρες::getline(streamData, val, διαχωριστής)) {
outputArray.push_back(ωρες)?
}
// Εκτυπώστε τα χωρισμένα δεδομένα
ώρες::κόστος << 'Η αρχική συμβολοσειρά είναι:' <<strData<<ώρες::endl?
// Διαβάστε τον πίνακα και εκτυπώστε τα χωρισμένα δεδομένα
ώρες::κόστος << ' nΟι τιμές μετά τη διάσπαση της συμβολοσειράς με βάση το διάστημα: ' <<ώρες::endl?
Για (αυτο &ωρες:outputArray) {
ώρες::κόστος <<ωρες<<ώρες::endl?
}
ΕΠΙΣΤΡΟΦΗ 0?
}

Παραγωγή:



Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση του παραπάνω κώδικα.

Χωρίστε συμβολοσειρά χρησιμοποιώντας τη συνάρτηση strtok ()

Η συνάρτηση strtok () μπορεί να χρησιμοποιηθεί για να χωρίσει μια συμβολοσειρά διακινδυνεύοντας το τμήμα της συμβολοσειράς με βάση έναν οριοθέτη. Επιστρέφει έναν δείκτη στο επόμενο διακριτικό εάν υπάρχει. διαφορετικά, επιστρέφει μια τιμή NULL. ο συμβολοσειρά.η απαιτείται κεφαλίδα για να χρησιμοποιήσετε αυτήν τη λειτουργία. Ένας βρόχος θα απαιτήσει ανάγνωση όλων των διαχωρισμένων τιμών από τη συμβολοσειρά. Το πρώτο όρισμα περιέχει την τιμή συμβολοσειράς που θα αναλυθεί και το δεύτερο όρισμα περιέχει τον οριοθέτη που θα χρησιμοποιηθεί για τη δημιουργία του διακριτικού. Η σύνταξη αυτής της συνάρτησης δίνεται παρακάτω.

Σύνταξη:

απανθρακώνω * στρτοκ ( απανθρακώνω *str,const απανθρακώνω *οριοθετητές)?

Δημιουργήστε ένα αρχείο C ++ με τον ακόλουθο κώδικα για να χωρίσετε μια συμβολοσειρά χρησιμοποιώντας τη συνάρτηση strtok (). Ένας πίνακας χαρακτήρων ορίζεται στον κώδικα που περιέχει μια άνω και κάτω τελεία (‘:’) ως διαχωριστικό. Στη συνέχεια, το strtok () η συνάρτηση καλείται με την τιμή συμβολοσειράς και τον οριοθέτη για να δημιουργήσει το πρώτο διακριτικό. Ο ' ενώ Ο βρόχος ’ορίζεται για τη δημιουργία των άλλων μάρκων και των τιμών συμβόλων μέχρι το ΜΗΔΕΝΙΚΟ βρίσκεται η τιμή.

// Συμπεριλάβετε τις απαραίτητες βιβλιοθήκες
#περιλαμβάνω
#περιλαμβάνω

intκύριος()
{
// Δηλώστε μια σειρά χαρακτήρων
απανθρακώνωstrArray[] = 'Mehrab Hossain: IT Professional: [email protected]: +8801726783423'?
// Επιστρέψτε την πρώτη τιμή διακριτικού με βάση το ':'
απανθρακώνω *tokenValue= στρτοκ(strArray,':')?
// Αρχικοποίηση της μεταβλητής μετρητή
intμετρητής= 1?
/ *
Επαναλάβετε το βρόχο για να εκτυπώσετε την τιμή διακριτικού
και χωρίστε τα υπόλοιπα δεδομένα συμβολοσειράς για να λάβετε
η επόμενη συμβολική τιμή
* /

ενώ (tokenValue!= ΜΗΔΕΝΙΚΟ)
{
αν(μετρητής== 1)
printf('Όνομα: %s n', tokenValue)?
αλλού αν(μετρητής== 2)
printf('Επάγγελμα: %s n', tokenValue)?
αλλού αν(μετρητής== 3)
printf('Email: %s n', tokenValue)?
αλλού
printf(«Αριθμός κινητού: %s n', tokenValue)?
tokenValue= στρτοκ(ΜΗΔΕΝΙΚΟ,':')?
μετρητής++?
}
ΕΠΙΣΤΡΟΦΗ 0?
}

Παραγωγή:

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση του παραπάνω κώδικα.

Διαχωρίστε συμβολοσειρά χρησιμοποιώντας τις λειτουργίες find () και erase ()

Η συμβολοσειρά μπορεί να χωριστεί σε C ++ χρησιμοποιώντας τις συναρτήσεις find () και erase (). Δημιουργήστε ένα αρχείο C ++ με τον ακόλουθο κώδικα για να ελέγξετε τις χρήσεις των συναρτήσεων find () και erase () για να χωρίσετε μια τιμή συμβολοσειράς βάσει ενός συγκεκριμένου οριοθέτη. Η τιμή διακριτικού δημιουργείται με την εύρεση της θέσης οριοθέτησης χρησιμοποιώντας τη συνάρτηση find () και η τιμή διακριτικού θα αποθηκευτεί μετά την αφαίρεση του οριοθέτη χρησιμοποιώντας τη συνάρτηση erase (). Αυτή η εργασία θα επαναληφθεί μέχρι να αναλυθεί ολόκληρο το περιεχόμενο της συμβολοσειράς. Στη συνέχεια, οι τιμές του διανυσματικού πίνακα θα εκτυπωθούν.

// Συμπεριλάβετε τις απαραίτητες βιβλιοθήκες
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω

intκύριος(){
// Ορίστε τη συμβολοσειρά
ώρες::σειράstringData= «Μπαγκλαντές και Ιαπωνία, Γερμανία και Βραζιλία»?
// Ορίστε το διαχωριστικό
ώρες::σειράδιαχωριστής= 'και'?
// Δηλώστε τη διανυσματική μεταβλητή
ώρες::διάνυσμαΧώρα{}?
// Δήλωση ακέραιης μεταβλητής
intθέση?
// Δήλωση μεταβλητής συμβολοσειράς
ώρες::σειράεξωστρεφής, συμβολικός?

/ *
Διαχωρίστε τη συμβολοσειρά χρησιμοποιώντας τη συνάρτηση substr ()
και προσθέτοντας τη διαχωρισμένη λέξη στο διάνυσμα
* /

ενώ ((θέση=stringData.εύρημα(διαχωριστής)) !=ώρες::σειρά::npos) {
ένδειξη=stringData.υποστ(0, θέση)?
// Αφαιρέστε τον επιπλέον χώρο από το μπροστινό μέρος της χωρισμένης συμβολοσειράς
Χώρα.push_back(ένδειξη.εξάλειψη(0, διακριτικό.find_first_not_of('')))?
stringData.εξάλειψη(0, θέση+διαχωριστής.μήκος())?
}
// Εκτυπώστε όλες τις χωρισμένες λέξεις εκτός από την τελευταία
Για (const αυτο &outstr:Χώρα) {
ώρες::κόστος <<outstr<<ώρες::endl?
}
// Εκτυπώστε την τελευταία διαχωρισμένη λέξη
ώρες::κόστος <<stringData.εξάλειψη(0, stringData.find_first_not_of('')) <<ώρες::endl?
ΕΠΙΣΤΡΟΦΗ 0?
}

Παραγωγή:

Η ακόλουθη έξοδος θα εμφανιστεί μετά την εκτέλεση του παραπάνω κώδικα.

συμπέρασμα

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