Η συμβολοσειρά C++ περιέχει μια υποσυμβολοσειρά

E Symboloseira C Periechei Mia Yposymboloseira



Στη C++, έχουμε τον τύπο δεδομένων συμβολοσειράς και μπορούμε να εφαρμόσουμε τις διαφορετικές συναρτήσεις για να κάνουμε τις διάφορες εργασίες με τις συμβολοσειρές. Μπορούμε να ελέγξουμε αν η υποσυμβολοσειρά υπάρχει μέσα στην αρχική συμβολοσειρά. Μπορούμε επίσης να πούμε ότι η συμβολοσειρά περιέχει την υποσυμβολοσειρά. Σε αυτόν τον οδηγό, θα μάθουμε τις τεχνικές που μας βοηθούν να βρούμε το 'string περιέχει το substring'. Οι συναρτήσεις “find()” και “strstr()” μας βοηθούν να κάνουμε αυτή την εργασία στον προγραμματισμό C++.

Παράδειγμα 1:

Το 'iostream' και το 'string' είναι τα αρχεία κεφαλίδας που περιλαμβάνονται εδώ, καθώς πρέπει να εργαστούμε με τις συμβολοσειρές και πρέπει επίσης να εισάγουμε ή να εξάγουμε τα δεδομένα. Επομένως, πρέπει να συμπεριλάβουμε αυτά τα αρχεία κεφαλίδας εδώ. Μετά από αυτό, συμπεριλαμβάνουμε το 'namespace std' με τη βοήθεια της λέξης κλειδιού 'using'. Έτσι, δεν χρειάζεται να βάλουμε αυτό το 'std' με όλες τις συναρτήσεις ξεχωριστά στον κώδικά μας. Στη συνέχεια, η συνάρτηση 'main()' καλείται εδώ.







Τώρα, δηλώνουμε τη συμβολοσειρά 'str_1' και εκχωρούμε ορισμένα δεδομένα συμβολοσειράς σε αυτήν τη μεταβλητή. Στη συνέχεια, αρχικοποιούμε επίσης μια άλλη μεταβλητή με το όνομα 'str_2' του τύπου δεδομένων 'string' και εκχωρούμε 'like' σε αυτήν τη μεταβλητή 'str_2'. Κάτω από αυτό, χρησιμοποιούμε τη λέξη-κλειδί 'bool' για να δώσουμε αληθή ή ψευδή αποτελέσματα. Αρχικοποιούμε το 'stringHasStr' με αυτόν τον τύπο δεδομένων 'bool' και χρησιμοποιούμε τη συνάρτηση 'find()'. Αυτό αναζητά τη 'συμβολοσειρά περιέχει την υποσυμβολοσειρά'. Το 'str_1' είναι η πλήρης συμβολοσειρά και το 'str_2' είναι η υποσυμβολοσειρά.



Εδώ, προσθέτουμε επίσης τη λέξη-κλειδί 'npos' που χρησιμοποιείται για να δείξει ότι δεν υπάρχουν αντιστοιχίες σε αυτήν τη συμβολοσειρά. Ελέγχει εάν η συμβολοσειρά περιέχει μια υποσυμβολοσειρά και αποθηκεύει το αποτέλεσμα σε αυτήν τη μεταβλητή bool 'stringHasStr'.



Στη συνέχεια, προχωράμε προς τη συνθήκη «αν» και περνάμε αυτήν τη μεταβλητή «stringHasStr» σε αυτήν τη συνθήκη «αν». Εάν το αποτέλεσμα που είναι αποθηκευμένο σε αυτήν τη μεταβλητή bool είναι 'true', χρησιμοποιείται η δήλωση μετά από αυτήν τη συνθήκη 'if' όπου χρησιμοποιούμε το 'cout' και εμφανίζουμε τη συμβολοσειρά που βρίσκεται εδώ. Αλλά εάν το αποτέλεσμα 'false' αποθηκεύεται σε αυτήν τη μεταβλητή bool, χρησιμοποιείται το άλλο μέρος και εμφανίζει ότι η συμβολοσειρά δεν βρίσκεται εδώ.





Κωδικός 1:

#include
#include

χρησιμοποιώντας namespace std?
int main ( )
{
συμβολοσειρά str_1 = 'Μου αρέσει η γλώσσα προγραμματισμού C++' ;
συμβολοσειρά str_2 = 'αρέσει' ;
bool stringHasStr = str_1.find ( str_2 ) ! = συμβολοσειρά::npos;
αν ( stringHasStr ) {
cout << 'Βρίσκουμε τη συμβολοσειρά εδώ που είναι' << str_2 << endl;
}
αλλού {
cout << 'Η συμβολοσειρά δεν βρέθηκε' << endl;
}
ΕΠΙΣΤΡΟΦΗ 0 ;
}



Παραγωγή:

Αυτή η δεδομένη έξοδος αποδίδει ότι η συμβολοσειρά περιέχει την υποσυμβολοσειρά και την εμφανίζει εδώ. Το ελέγχουμε αυτό χρησιμοποιώντας τη συνάρτηση «find()».

Παράδειγμα 2:

Περιλαμβάνουμε τρία αρχεία κεφαλίδας εδώ που είναι 'iostream', 'string' και 'cstring'. Στη συνέχεια, καλέστε το 'main()' αφού τοποθετήσετε το 'namespace std'. Η συμβολοσειρά 'new_str' δηλώνεται τώρα και εκχωρούνται ορισμένα δεδομένα συμβολοσειράς.

Στη συνέχεια, αρχικοποιούμε μια δεύτερη μεταβλητή του τύπου δεδομένων 'string' που ονομάζεται 'sub_str' και της δίνουμε την τιμή 'πολύ'. Στη συνέχεια, τοποθετούμε το “const char*”. Επομένως, η αλλαγή της τιμής του δείκτη ώστε να δείχνει προς την άλλη θέση στη μνήμη είναι αδύνατη. Εδώ δηλώνουμε τη μεταβλητή «FindingStr» ως δείκτη «const char*». Το αρχικοποιούμε με τη μέθοδο “strstr()” και περνάμε και τις δύο συμβολοσειρές μαζί με τη συνάρτηση “c_str()” που μετατρέπει μια συμβολοσειρά σε πίνακα χαρακτήρων που τελειώνει με μηδενική τιμή. Αυτή η μέθοδος 'strstr()' βοηθά στον έλεγχο του εάν η συμβολοσειρά 'new_str' περιέχει την υποσυμβολοσειρά 'sub_str' ή όχι. Στη συνέχεια, έχουμε το 'if' στο οποίο προσθέτουμε το 'FindingStr'. Εάν βρει τη δευτερεύουσα συμβολοσειρά στο πρωτότυπο, εκτελείται η πρόταση μετά το 'if' όπου χρησιμοποιούμε το 'cout'. Εάν η υποσυμβολοσειρά δεν βρεθεί, μετακινείται απευθείας προς το τμήμα 'άλλο' και εκτυπώνει το αποτέλεσμα που τοποθετείται μετά το τμήμα 'άλλο'.

Κωδικός 2:

#include
#include
#include

χρησιμοποιώντας namespace std?
int main ( )
{
συμβολοσειρά new_str = «Έξω βρέχει και ο καιρός είναι πολύ ευχάριστος». ;
συμβολοσειρά sub_str = 'πολύ' ;
const char * FindingStr = strstr ( new_str.c_str ( ) , sub_str.c_str ( ) ) ;
αν ( FindingStr ) {
cout << 'Βρίσκουμε το String και το string είναι:' << sub_str << endl;
}
αλλού {
cout << 'Η συμβολοσειρά δεν βρέθηκε' << endl;
}
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:

Μπορεί να παρατηρήσουμε ότι η δεδομένη συμβολοσειρά περιέχει τη δευτερεύουσα συμβολοσειρά καθώς εμφανίζει τη δήλωση που προσθέσαμε μετά το 'if' και εκτυπώνει την υποσυμβολοσειρά εδώ. Το ελέγχουμε αυτό χρησιμοποιώντας τη συνάρτηση “strstr()”.

Παράδειγμα 3:

Αρχικοποιούμε δύο μεταβλητές συμβολοσειράς εδώ: 'myNewStr' και 'mySubStr'. Στη συνέχεια, εκχωρούμε κάποια δεδομένα συμβολοσειράς και δηλώνουμε δύο ακέραιες μεταβλητές: “posOfStr” και “indexOfStr”.

Κάτω από αυτό, χρησιμοποιούμε τον βρόχο 'while()' και εκχωρούμε τη μεταβλητή συνάρτησης 'find()' στη μεταβλητή 'indexOfStr' μέσα σε αυτόν τον βρόχο 'while()'. Περνάμε δύο μεταβλητές σε αυτή τη συνάρτηση 'find()' που είναι 'mySubStr' και 'posOfStr'. Στη συνέχεια, τοποθετούμε τη λέξη-κλειδί «npos» που ελέγχει ότι το αποτέλεσμα της συνάρτησης «εύρεση» δεν είναι ίσο με «npos». Μετά από αυτό, χρησιμοποιούμε το 'cout' το οποίο αυξάνει την τιμή του δείκτη κατά ένα και το αποθηκεύει στη μεταβλητή 'posOfStr'.

Κωδικός 3:

#include
#include

χρησιμοποιώντας namespace std?
int main ( ) {
συμβολοσειρά myNewStr = «Εδώ βρίσκουμε τη χορδή» ;
συμβολοσειρά mySubStr = 'σειρά' ;
int posOfStr = 0 ;
int indexOfStr;
ενώ ( ( indexOfStr = myNewStr.find ( mySubStr, posOfStr ) ) ! = συμβολοσειρά::npos ) {
cout << 'Η υποσυμβολοσειρά είναι' << ''' << mySubStr << ''' << ' Βρέθηκε στον αριθμό ευρετηρίου : ' << indexOfStr << endl;
posOfStr = indexOfStr + 1 ;
}
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:

Εδώ, δείχνει ότι η δεδομένη συμβολοσειρά περιέχει την υποσυμβολοσειρά και ο αριθμός ευρετηρίου αυτής της συμβολοσειράς είναι '19' που εμφανίζεται επίσης σε αυτό το αποτέλεσμα.

Παράδειγμα 4:

Σε αυτόν τον κώδικα, συμπεριλαμβάνουμε το αρχείο κεφαλίδας 'bits/stdc++.h'. Τώρα, δεν χρειάζεται να συμπεριλάβουμε άλλα αρχεία κεφαλίδας καθώς περιέχουν όλες τις απαιτούμενες βιβλιοθήκες. Αφού καλέσουμε την 'main()', αρχικοποιούμε τις μεταβλητές 'org_str' και 'sub_str' του τύπου δεδομένων 'string'. Στη συνέχεια, προσθέτουμε τη συνθήκη «if» στην οποία χρησιμοποιούμε τη συνάρτηση «strstr()». Αυτή η συνάρτηση πραγματοποιεί αναζήτηση για να δει εάν η δεδομένη συμβολοσειρά περιέχει την επιθυμητή υποσυμβολοσειρά. Στη συνέχεια, προσθέτουμε μια δήλωση 'cout' για να εκτυπώσουμε ότι η υποσυμβολοσειρά βρίσκεται εδώ. Έπειτα, βάζουμε και το τμήμα “else” το οποίο εκτελείται μόνο όταν η συνθήκη “if” δεν ικανοποιείται ή η υποσυμβολοσειρά δεν βρεθεί στη συμβολοσειρά.

Μετά από αυτό, δηλώνουμε τη μεταβλητή «sub_str2» και εκχωρούμε εδώ δεδομένα συμβολοσειράς. Στη συνέχεια εισάγεται η συνθήκη 'if' και χρησιμοποιείται η συνάρτηση 'strstr()'. Αυτή η μέθοδος αναζητά εάν η παρεχόμενη συμβολοσειρά περιέχει ή όχι την ζητούμενη υποσυμβολοσειρά. Στη συνέχεια, το αποτέλεσμα εκτυπώνεται εδώ χρησιμοποιώντας την εντολή 'cout'. Περιλαμβάνουμε επίσης μια ενότητα 'άλλο' που εκτελείται μόνο εάν δεν πληρούται η συνθήκη 'αν' ή εάν η δευτερεύουσα συμβολοσειρά δεν μπορεί να εντοπιστεί στη συμβολοσειρά.

Κωδικός 4:

#include
χρησιμοποιώντας namespace std?
int main ( ) {
συμβολοσειρά org_str = 'Γλώσσα Προγραμματισμού C++' ;
συμβολοσειρά sub_str = 'Πρόγραμμα' ;
αν ( strstr ( org_str.c_str ( ) ,sub_str.c_str ( ) ) )
{
cout << 'Η υποσυμβολοσειρά εδώ είναι' << ''' << sub_str << ''' << 'είναι παρούσα σε' << org_str << endl;
}
αλλού {
cout << 'Η υποσυμβολοσειρά δεν υπάρχει στη συμβολοσειρά.' << endl;
}
συμβολοσειρά sub_str2 = 'Ιάβα' ;

αν ( strstr ( org_str.c_str ( ) ,sub_str2.c_str ( ) ) )
{
cout << 'Η υποσυμβολοσειρά εδώ είναι' << ''' << sub_str2 << ''' << 'είναι παρούσα σε' << org_str << endl;
}
αλλού {
cout << 'Η υποσυμβολοσειρά δεν υπάρχει σε αυτήν τη συμβολοσειρά.' << endl;
}
ΕΠΙΣΤΡΟΦΗ 0 ;
}

Παραγωγή:

Το αποτέλεσμα της πρώτης συνάρτησης 'strstr()' δείχνει ότι η συμβολοσειρά περιέχει την υποσυμβολοσειρά, αλλά το αποτέλεσμα της δεύτερης συνάρτησης 'strstr()' δείχνει ότι η υποσυμβολοσειρά δεν υπάρχει στη συμβολοσειρά.

συμπέρασμα

Η έννοια του 'string περιέχει το substring' εξετάζεται διεξοδικά σε αυτόν τον οδηγό. Εξερευνήσαμε δύο μεθόδους που βοηθούν στην αναζήτηση εάν η 'συμβολοσειρά περιέχει την υποσυμβολοσειρά'. Εξηγήσαμε τις συναρτήσεις “find()” καθώς και τις συναρτήσεις “strstr()” που παρέχει η C++ εδώ σε αυτόν τον οδηγό για την εκτέλεση αυτής της εργασίας. Δείχνουμε με μοναδικά παραδείγματα στα οποία μάθαμε πώς να χρησιμοποιούμε αυτές τις συναρτήσεις για να ελέγξουμε αν η 'συμβολοσειρά περιέχει την υποσυμβολοσειρά' σε αυτήν.