Chaînes de caractères
Nous souhaitons écrire ici une classe String qui se comporte comme une version très simplifiée de la classe std::string fournie par la librairie standard. Voici un exemple d'utilisation de cette classe :
#include <iostream> #include "String.h" int main() { String a; String b="bonjour"; a=b+", comment ca va?"; a+="... ca va bien."; std::cout << a << std::endl; for(size_t i=0;i<a.size();i++) { cout << a[i] << std::endl; } size_t pos=a.find("va"); std::cout << pos << endl; a.replace(27, "mal, vivement les vacances"); std::cout << a << std::endl; if(a<b) { std::cout << "a<b" << std::endl; } }
Dans cet exercice, les fonctions de la bibliothèque C (strdup, strcat, …) ne devront pas être utilisées.
-
Dans ce programme, identifiez les éléments qui sont des
Stringet ceux qui sont deschar const *. -
Identifiez et écrivez les constructeurs et le destructeur nécessaires pour la classe
String. -
Identifiez et écrivez les opérateurs nécessaires pour la classe
String. Les opérateurs+et+=pourront prendre un argument du typeString const &, la conversion depuis unchar const *se faisant automatiquement. Pourquoi ?-
Implémentez les autres fonctions nécessaires.
-
Cartes à jouer
Implémentez une classe représentant une carte à jouer d'un jeu de 52 cartes. La classe devra contenir :
-
le rang de la carte (de l'as au roi);
-
la couleur de la carte (pique, cœur, carreau, trèfle);
-
les opérateurs d'incrémentation et de décrémentation pour passer à la carte de valeur immédiatement supérieure ou immédiatement inférieure;
-
des opérateurs de comparaison pour comparer les valeurs de deux cartes.
L'ordre de valeur des rangs va de l'as au roi, celui des couleurs est pique, cœur, carreau, trèfle. Utilisez des énumérations pour le rang et la valeur.