En général, quand on programme, on ne veut pas réinventer la roue. Pour de nombreux algorithmes classiques, quelqu'un a sans doute déjà fait le travail à ta place.
include
Pour inclure le contenu d'autres fichiers, C++ utilise la directive include.
Ces inclusions doivent être déclarées en haut du fichier.
Lors de la compilation, la ligne contenant la directive est remplacée par le contenu du fichier correspondant.
Après les inclusions, les espaces de noms restent tels qu'ils sont dans le fichier d'origine.
La bibliothèque standard offre de nombreuses fonctions, algorithmes et structures de données courants.
La bibliothèque standard utilise l'espace de noms std.
Un exemple est la bibliothèque de calcul numérique du C, cmath.
Elle fournit de nombreuses opérations mathématiques courantes.
#include <cmath>
int cube_me(int a) {
// raise `a` to the third power
return std::pow(a, 3);
}
Les bibliothèques standard s'incluent avec des chevrons <> plutôt qu'avec des guillemets doubles ".
La différence réside dans l'endroit où le compilateur cherche les fichiers correspondants.
Avec la version entre chevrons, la recherche dans le projet courant est ignorée et la recherche commence directement dans les répertoires d'inclusion du système.
Si tu veux inclure des fichiers locaux, tu utiliseras des guillemets doubles : #include "myfile"
Une string en C++ est un objet mutable qui représente du texte sous la forme d'une séquence de caractères (lettres, chiffres, ponctuation, etc.).
On manipule une chaîne de caractères en appelant ses méthodes.
En C++, le type string et les fonctions associées doivent d'abord être inclus depuis la bibliothèque de chaînes de caractères.
Pour cela, ajoute #include <string> en haut de ton fichier.
Ils viendront alors peupler l'espace de noms std.
Le nom pleinement qualifié du type string est std::string.
Le littéral de chaîne utilise le caractère guillemet double : ".
#include <string>
std::string w_berry_quote{"A well-made sentence, I think, is a thing of beauty."};
On peut utiliser l'opérateur + pour concaténer des chaînes de caractères :
std::string original_title{"The School of Rock"};
std::string sequel_indicator{"Electric Boogaloo"};
std::string next_movie_title = original_title + " 2: " + sequel_indicator;
Pour utiliser la bibliothèque de chaînes de caractères, il faut savoir qu'il est possible d'appeler une fonction qui appartient à un objet. On parle alors de fonctions membres. Plus tard dans le programme, tu en apprendras davantage sur les fonctions membres et sur le concept de classe qui leur est associé.
std::string qualification{"awesome"};
// 1st argument: from the index to the end of the string:
std::string who_is_awesome = qualification.substr(5);
// => "me"
// 2nd optional argument for the length:
std::string material{"haunted books"};
std::string ghost = material.substr(8, 3);
// => "boo"
La fonction find est également très utile.
On l'appelle comme fonction membre de la chaîne et elle prend une chaîne de caractères en argument.
find renvoie la position, indexée à partir de zéro, de la première occurrence dans la chaîne.
std::string new_release{"apple released a new app!"};
new_release.find("app");
// => 0
new_release.find("e");
// => 4
Dans cet exercice, tu vas traiter les lignes d'un rapport de journalisation.
Chaque ligne de journal est une string au format suivant : "[<LEVEL>]: <MESSAGE>".
Il existe trois niveaux de journalisation différents :
INFOWARNINGERRORTu as trois tâches, chacune prenant une ligne de journal et te demandant d'en faire quelque chose.
Implémente la méthode log_line::message pour renvoyer le message d'une ligne de journal :
log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"
Implémente la méthode log_line::log_level pour renvoyer le niveau de journalisation d'une ligne de journal, qui doit être renvoyé en majuscules :
log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"
Implémente la méthode log_line::reformat qui reformate la ligne de journal, en plaçant le message en premier et le niveau de journalisation après, entre parenthèses :
log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Inscris-toi sur Exercism pour apprendre et maîtriser C++ avec 19 concepts100 exercices, et un vrai mentorat humain, le tout gratuitement.