Bonjour ;
svp la foction strln est utilisé pour avoir la taille d'une chaine de caractére
mais je ne sais pas pourquoi je n'arrive pas a l'utiliser
erreur a chaque foisCode:
1
2
3 string ch ("bonojour "); cp=strlen(std::ch) ;
merci
Version imprimable
Bonjour ;
svp la foction strln est utilisé pour avoir la taille d'une chaine de caractére
mais je ne sais pas pourquoi je n'arrive pas a l'utiliser
erreur a chaque foisCode:
1
2
3 string ch ("bonojour "); cp=strlen(std::ch) ;
merci
bonjour,
si string est un std::string, alors la méthode pour récupérer sa taille est length
http://www.cplusplus.com/reference/s...string/length/
Bonne journée
s'il vous plait c'est quoi la différence entre std::string et string
bonjour
std:: devant va dire au compilateur de chercher le type string contenu dans le namespace std. Il n'y a pas de type string dans le scope gloabal (a part si tu l'as redefinit ou utilisé une lib qui le fait).
Tu utilises probablement
qui te permet de ne pas préciser que les fonctions viennent du namespace std. Il est déconseillé d'utiliserCode:using namespace std;
pour justement, eviter ce genre d'incomprehentionCode:using namespace X
Pour clarifier un peu la chose si la première question, std::string est un objet (avec des données qui lui sont propres et des méthodes pour y accéder ou les modifier).
Quand on instancie un objet:
Pour récupérer sa longeur, il faut utiliser la fonction length:Code:string ch ("bonojour ");
Quand à la fonction strlen(), elle vient du C, donc il est préférable de ne pas l'utiliser en C++, sauf si tu bosses avec un tampon mémoire (ne contenant pas de caractères nuls, sauf à la fin) par exemple.Code:lg = ch.length();
Son utilisation "normale" ressemble plutôt à ça:
Si tu tiens à l'utiliser dans un type string (ce qui est une connerie car un objet de type string connait déjà sa longeur, tandis que strlen() parcours la chaîne pour calculer la longeur, ça serait plutôt quelque chose comme:Code:
1
2 const char *s = "Bonjour"; size_t lg = strlen(s);
Petite précision hyper importante à propose des chaines en C (qui n'ont rien à voir avec les string, implémentés en C ou en C++), c'est qu'il s'agit d'une suite de caractères ordonnés, ce ne sont pas des objets avec une propriété comme la longeur.Code:
1
2 string ch ("bonojour "); size_t lg = ch.c_str();
Donc pour que strlen() parcours la chaîne et s'arrête à la fin, il faut qu'elle se termine obligatoirement par le caractère nul (valant 0, représenté \0 dans une chaine).
Par exemple, dans une initialisation, il est implicite, mais si on l'ajoute manuellement:
lg = 7Code:
1
2 const char s[] = "Bonjour\0, ceci est une chaîne coupée"; size_t lg = strlen(s);