theodorus a dit:
Par string C, je voulais dire terminé par un "\0". On ne peut mesurer la taille de ce genre de strings qu'en le parcourant du premier char au dernier. Les strings C++ sont donc différents?
hum, ici on parle d'orienté objet...
string (cfr STL) est une classe.
une classe est un moule à objets, une fabrique d'objets;
un objet est une instance d'une classe.
une classe est composée de membres données (privés) => masquage de l'information et de méthodes (publiques) => l'interface utilisateur...
string s;
s est une instance statique de la classe string.
string est implémentée d'une certaine manière (trop compliqué à expliquer en peu de lignes) et possède des méthodes, des fonctions membres qui permettent de se simplifier la vie (exemple : size, length, l'opérateur d'indiçage etc...)
=> Quand tu crées un string (C++) en utilisant #include <string> de la STL, tu crées une instance de la classe string, un objet, "un brol" qui encapsule des données (une chaîne de type C par exemple) et des méthodes qui portent sur ces données qui ne sont pas "accessibles" de l'extérieur sauf en passant par les fonctions membres.
Code:
class MaChaine {
private:
/* une implémentation qui ne t'intéresse pas pour le
moment
*/
public:
// des méthodes diverses
//... exemple :
// pour connaître sa taille
const int saTaille() const;
// pour parcourir et même modifier un caractère à un certain endroit...
char & operator[](int i);
};
Bon, la classe string => basic_string est implémentée de telle manière à ce que son utilisateur voit sa vie se simplifier...
Exemple, le mécanisme d'exception lancé lorsqu'on veut faire des conneries du type débordement
Enfin, je peu pas faire un cours ici non + hein...