logo

Sous-chaîne en C++

La fonction substring est utilisée pour gérer les opérations de chaîne telles que fissuré() , ajouter() , etc . Il génère une nouvelle chaîne avec sa valeur initialisée à une copie d'une sous-chaîne de cet objet. En C++, le fichier d'en-tête requis pour std::substr(), les fonctions de chaîne est .

La fonction sous-chaîne prend deux valeurs position et seulement comme argument et renvoie un objet chaîne nouvellement construit avec sa valeur initialisée à une copie d'une sous-chaîne de cet objet. La copie de la chaîne commence à partir de position et c'est fait jusqu'à poste+len signifie [pos, pos+len).

Syntaxe:



string substr (size_t pos, size_t len) const;>

Paramètres:

  • pos : Position du premier caractère à copier.
  • seulement: Longueur de la sous-chaîne.
  • taille_t : C'est un type intégral non signé.

Valeur de retour : Il renvoie un objet chaîne.

Exemple:

C++
// C++ program to demonstrate functioning of substr() #include  #include  using namespace std; int main() {  // Take any string  string s1 = 'Geeks';  // Copy two characters of s1 (starting  // from position 3)  string r = s1.substr(3, 2);  // prints the result  cout << 'String is: ' << r;  return 0; }>

Sortir
String is: ks>
  • Complexité temporelle : SUR)
  • Espace auxiliaire : SUR)

Plus d'exemples :

string: '  h e l l o w o r l d  ' index: 0 1 2 3 4 5 6 7 8 9 10>

si on écrit : –

  • s.substr(s.begin(),3) => erreur de compilation (car impossible de convertir un itérateur en type de données int)
  • s.substr(2,3) => llo (trois lettres du 2ème index)
  • s.substr(*s.begin()-s[0],3) => hel (*s.begin() est 'h' alors 'h'-s[0]=> 'h'-'h'=0 signifie substr(0,3) —– trois lettres de l'index zéro
  • s.substr(5,1) => ‘ ‘ (imprime un espace vide, c’est-à-dire au 5ème index)
  • s.substr(2,0) => (pas de sortie) (sélectionne zéro lettre du deuxième index)

Points importants à retenir

  1. L'index du premier caractère est 0 (et non 1).
  2. Si position est égal à la longueur de la chaîne, la fonction renvoie une chaîne vide.
  3. Si position est supérieur à la longueur de la chaîne, il renvoie out_of_range. Si cela se produit, il n’y a aucun changement dans la chaîne.
  4. Si la sous-chaîne demandée seulement est supérieur à la taille d'une chaîne, alors la sous-chaîne renvoyée est [pos, taille()) .
  5. Si seulement n'est pas passé en paramètre, alors la sous-chaîne renvoyée est [pos, taille()).

Applications de la sous-chaîne

  • Obtenez une sous-chaîne après un caractère
  • Obtenez une sous-chaîne avant un caractère
  • Imprimer toutes les sous-chaînes d'une chaîne donnée
  • Somme de toutes les sous-chaînes d'une chaîne représentant un nombre
  • Imprimer la valeur maximale de toutes les sous-chaînes d'une chaîne représentant un nombre
  • Imprimer la valeur minimale de toutes les sous-chaînes d'une chaîne représentant un nombre

Obtenez une sous-chaîne après un caractère

En cela, une chaîne et un caractère sont donnés et vous devez imprimer la sous-chaîne suivie du caractère donné.
Extrayez tout après le : dans la chaîne Chien Chat .

TCP contre UDP

Exemple:

C++
// C++ program to demonstrate functioning of substr() #include  #include  using namespace std; int main() {  // Take any string  string s = 'dog:cat';  // Find position of ':' using find()  int pos = s.find(':');  // Copy substring after pos  string sub = s.substr(pos + 1);  // prints the result  cout << 'String is: ' << sub;  return 0; }>

Sortir
String is: cat>

Complexité temporelle : SUR)

Espace auxiliaire : SUR)

Comment obtenir une sous-chaîne avant un caractère ?

En cela, une chaîne et un caractère sont donnés et vous devez imprimer la sous-chaîne suivie du caractère donné.

Exemple:

C++
// C++ program to demonstrate functioning of substr() #include  #include  using namespace std; int main() {  // Take any string  string s = 'dog:cat';  // Find position of ':' using find()  int pos = s.find(':');  // Copy substring before pos  // Extract everything before the ':' in the string  // 'dog:cat'.  string sub = s.substr(0, pos);  // prints the result  cout << 'String is: ' << sub;  return 0; }>

Sortir
String is: dog>

Complexité temporelle : SUR)

Espace auxiliaire : SUR)

Comment imprimer toutes les sous-chaînes d’une chaîne donnée ?

Étant donné une chaîne en entrée. Nous devons écrire un programme qui imprimera toutes les sous-chaînes non vides de cette chaîne donnée.

Exemple:

C++
// C++ program to demonstrate all possible // substrings of a given string #include  using namespace std; // Function to print all sub strings void subString(string s, int n) {  // Pick starting point in outer loop  // and lengths of different strings for  // a given starting point  for (int i = 0; i < n; i++)  for (int len = 1; len <= n - i; len++)  cout << s.substr(i, len) << endl; } // Driver program to test above function int main() {  string s = 'abcd';  subString(s, s.length());  return 0; }>

Sortir
a ab abc abcd b bc bcd c cd d>

Complexité temporelle : SUR3)

Espace auxiliaire : O(1)

Imprimer la somme de toutes les sous-chaînes d'une chaîne représentant un nombre

Étant donné un entier représenté sous forme de chaîne, nous devons obtenir la somme de toutes les sous-chaînes possibles de cette chaîne.

Exemple:

C++
// C++ program to print sum of all possible substring of // a number represented as a string #include  using namespace std; // Utility method to convert character digit to // integer digit int toDigit(char ch) { return (ch - '0'); } // Returns sum of all substring of num int sumOfSubstrings(string s) {  vector v;  int n = s.length();  pour (int je = 0; je< n; i++) {  for (int len = 1; len <= n - i; len++) {  string sub = (s.substr(i, len));  int x = stoi(sub);  v.push_back(x);  }  }  int res = accumulate(v.begin(), v.end(), 0);  return res; } // Driver code to test above methods int main() {  string num = '1234';  cout << sumOfSubstrings(num) << endl;  return 0; }>

Sortir
1670>

Complexité temporelle : SUR3)
Espace auxiliaire : SUR)

Imprimer la valeur maximale de toutes les sous-chaînes d'une chaîne représentant un nombre

Étant donné un entier représenté sous forme de chaîne, nous devons obtenir le maximum de toutes les sous-chaînes possibles de la chaîne donnée qui représente un nombre.

Exemple:

C++
// C++ program to demonstrate max. of all possible // substrings of a given string #include  using namespace std; void subString(string s, int n) {  vector v;  pour (int je = 0; je< n; i++) {  for (int len = 1; len <= n - i; len++) {  string sub = (s.substr(i, len));  int x = stoi(sub);  v.push_back(x);  }  }  cout << *max_element(v.begin(), v.end()) << endl; } // Driver program to test above function int main() {  string s = '823';  subString(s, s.length());  return 0; }>

Sortir
823>

Explication: Toutes les sous-chaînes sont { 8, 82, 823, 2, 23, 3 } et la valeur maximale de la sous-chaîne est 823.

Complexité temporelle : SUR3)

Espace auxiliaire : SUR!)

Imprimer la valeur minimale de toutes les sous-chaînes d'une chaîne représentant un nombre

Étant donné un entier représenté sous forme de chaîne, nous devons obtenir le minimum de toutes les sous-chaînes possibles de la chaîne donnée qui représente un nombre.

Exemple:

C++
// C++ program to demonstrate minimum of all possible // substrings of a given string #include  using namespace std; void subString(string s, int n) {  vector v;  pour (int je = 0; je< n; i++) {  for (int len = 1; len <= n - i; len++) {  string sub = (s.substr(i, len));  int x = stoi(sub);  v.push_back(x);  }  }  cout << *min_element(v.begin(), v.end()) << endl; } // Driver program to test above function int main() {  string s = '4572';  subString(s, s.length());  return 0; }>

Sortir
2>

Complexité temporelle : SUR3)
Espace auxiliaire : SUR!)

Autres applications de la sous-chaîne

  • Recherche de texte : Les sous-chaînes sont utilisées pour rechercher des mots ou des expressions dans des corps de texte plus volumineux. Ceci est couramment utilisé dans les moteurs de recherche, où un utilisateur peut saisir une expression ou un mot-clé et le moteur recherchera toutes les correspondances contenant cette sous-chaîne.
  • Analyse de texte : Les sous-chaînes sont utilisées dans les algorithmes d'analyse de texte pour décomposer les chaînes plus grandes en morceaux plus petits. Par exemple, un analyseur peut être utilisé pour extraire des mots individuels d'une phrase et les stocker dans une structure de données.
  • Manipulation de texte : Les sous-chaînes sont utilisées dans les applications de manipulation de texte pour rechercher et remplacer certains mots ou expressions dans des corps de texte plus volumineux. Cela peut être utilisé pour effectuer des tâches de recherche et de remplacement ou pour mettre à jour des informations dans un document.
  • Traitement du langage naturel : Les sous-chaînes sont utilisées dans les algorithmes de traitement du langage naturel pour identifier des mots et des expressions. Ceci est utilisé dans des applications telles que la reconnaissance vocale, où l'algorithme doit identifier les mots prononcés par un utilisateur.
  • La reconnaissance de formes: Les sous-chaînes sont utilisées dans les algorithmes de reconnaissance de formes pour identifier des modèles dans les données. Cela peut être utilisé pour identifier des tendances dans les données financières ou pour détecter des anomalies dans les images.
  • Sécurité du mot de passe : Les sous-chaînes sont utilisées pour vérifier les mots de passe. Cela se fait en comparant le mot de passe saisi avec une sous-chaîne stockée du mot de passe d'origine. Si les deux correspondent, le mot de passe est vérifié. Cette technique est utilisée dans de nombreuses applications pour augmenter la sécurité.