Rechercher la longueur d'une chaîne en C++

Jinku Hu 12 octobre 2023
  1. Utilisez la fonction length pour trouver la longueur d’une chaîne en C++
  2. Utilisez la fonction size pour trouver la longueur d’une chaîne en C++
  3. Utilisez la boucle while pour trouver la longueur d’une chaîne en C++
  4. Utilisez la fonction std::strlen pour rechercher la longueur d’une chaîne en C++
Rechercher la longueur d'une chaîne en C++

Cet article explique plusieurs méthodes de recherche de la longueur d’une chaîne en C++.

Utilisez la fonction length pour trouver la longueur d’une chaîne en C++

La bibliothèque standard C++ fournit la classe std::basic_string pour augmenter les séquences de type char et implémenter une structure générique pour stocker et manipuler ces données. Cependant, la plupart des gens sont plus familiers avec le type std::string qui est lui-même un alias de type pour std::basic_string<char>. std::string fournit la fonction intégrée length pour récupérer la longueur de la séquence char stockée.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << str1.length() << endl;

  exit(EXIT_SUCCESS);
}

Production:

string: this is random string oiwaoj
length: 28

Utilisez la fonction size pour trouver la longueur d’une chaîne en C++

Une autre fonction intégrée incluse dans la classe std::string est size, qui se comporte de la même manière que la méthode précédente. Il ne prend aucun argument et renvoie le nombre d’éléments char dans l’objet string.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << str1.size() << endl;

  exit(EXIT_SUCCESS);
}

Production:

string: this is random string oiwaoj
length: 28

Utilisez la boucle while pour trouver la longueur d’une chaîne en C++

Alternativement, on peut implémenter sa propre fonction pour calculer la longueur de la chaîne. Dans ce cas, nous utilisons la boucle while pour parcourir la chaîne comme une séquence char et incrémenter le compteur d’un à chaque itération. Notez que la fonction prend char comme argument, et que la méthode c_str est appelée pour récupérer ce pointeur dans la fonction principale. La boucle s’arrête lorsque la valeur du pointeur déréférencé est égale à 0, et l’implémentation de chaîne terminée par null garantit cela.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

size_t lengthOfString(const char *s) {
  size_t size = 0;

  while (*s) {
    size += 1;
    s += 1;
  }

  return size;
}

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << lengthOfString(str1.c_str()) << endl;

  exit(EXIT_SUCCESS);
}

Production:

string: this is random string oiwaoj
length: 28

Utilisez la fonction std::strlen pour rechercher la longueur d’une chaîne en C++

Enfin, on peut recourir à la fonction de bibliothèque de chaînes C à l’ancienne strlen, qui prend un seul argument const char* comme fonction personnalisée - lengthOfString. Ces deux dernières méthodes peuvent être défectueuses lorsqu’elles sont appelées sur des séquences char qui ne se terminent pas par un octet nul, car elles pourraient accéder à la mémoire hors limites pendant la traversée.

#include <cstring>
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[]) {
  string str1 = "this is random string oiwaoj";

  cout << "string: " << str1 << endl;
  cout << "length: " << std::strlen(str1.c_str()) << endl;

  exit(EXIT_SUCCESS);
}

Production:

string: this is random string oiwaoj
length: 28
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C++ String