Longueur de chaine (classique newbie)

Signaler
Messages postés
4
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
26 novembre 2004
-
Messages postés
4
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
26 novembre 2004
-
Bonjour , je débute en c++
Pourriez-vous corriger mon code .Le principe est de renvoyé la longueur d'une chaine tapée au clavier .Merci
Bon c'est archi-classique et j'aie fait une recherche sur le forum
http://www.cppfrance.com/forum.v2.aspx?ID=93656

Cependant je m'applique à faire du c++ et j'aie cru comprendre qu'il était déconseillé d'utiliser des char (propre au C seulement)

Alors comment coder ?

Voici le code
Code:

#include
#include <cstring> // pour brancher les fonctions de gestion des strings
//#include
using namespace std;

string chainetapee;
string nbcaract;

int main()
{
cout<<"Taper une chaine de caractère"<<endl;// affiche la phrase concernée
cin>>chainetapee;/*attend la frappe clavier*/
nbcaract = strlen(chainetapee);//renvoie le nombre de caractère dans la chaine
cout<<"Donc le nb de caractère ="<<nbcaract<<endl; //affiche le nombre de caractère
}

Et voici mon message d'erreur à la compilation .Je pense que ça coince entre ce qui est spécifique au C et ce qui est spécifique au C++

Code:

lgchaine.cpp: In function `int main()':
lgchaine.cpp:13: error: cannot convert `std::string' to `const char*' for
argument `1' to `size_t strlen(const char*)

4 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
oui,

#include <string>

string::size_type nbcaract = chainetapee.size();
Messages postés
4
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
26 novembre 2004

Ça marche impec !Mais

Tu peux développer un peu si il te plait .

string::size_type nbcaract = chainetapee.size();

J'aurais besoin d'être linker sur un(des) bon tuto(s) expliquant cette façon d'écrire .
Jusqu'a présent je ne suis tomber que sur des tutos et des fonctions du C
Tres peu sont orientés franchement c++

.size est visiblement une fonction propre au c++ . (Je trouverais les reste des fonctions dur MSDN Microsoft ; il me manque juste de solides explications c++)
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
size_type est un type membre de la classe string (model basic_string<>), c'est typedef d'entier non signé

size() est une methode membre (inline) de la classe string, elle retourne le nombre de caractere de la chaine (size_type)

http://casteyde.christian.free.fr/online/cours_cpp/book1.html

à partir de I.8, c'est specifique au c++
Messages postés
4
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
26 novembre 2004

Merci !