In generale, in programmazione non vuoi reinventare la ruota. Per molti algoritmi standard, probabilmente c'è già qualcuno che ha fatto il lavoro per te.
Per includere il contenuto di altri file, C++ usa la direttiva include.
Queste inclusioni vanno dichiarate in cima al file.
Durante la compilazione, la riga con la direttiva viene sostituita dal contenuto del rispettivo file.
Dopo le inclusioni, i namespace restano quelli del file originale.
La libreria standard offre molte funzioni, algoritmi e strutture dati comuni.
La libreria standard usa il namespace std.
Un esempio è la libreria numerica del C, cmath: fornisce molte operazioni matematiche comuni.
#include <cmath>
int cube_me(int a) {
// raise `a` to the third power
return std::pow(a, 3);
}
Le librerie standard si includono con le parentesi angolari (<>) al posto delle virgolette doppie (").
La differenza sta in dove il compilatore cerca i rispettivi file.
Con le parentesi angolari, la ricerca nel progetto corrente viene saltata e si parte direttamente dalle directory di inclusione del sistema.
Se vuoi includere file locali, usa le virgolette doppie: #include "myfile"
In C++ una string è un oggetto mutabile che rappresenta il testo come una sequenza di caratteri (lettere, cifre, punteggiatura, ecc.).
Le stringhe si manipolano chiamando i metodi della stringa.
In C++, il tipo stringa e le funzioni associate devono essere inclusi dalla libreria delle stringhe prima di poterli usare.
Puoi farlo aggiungendo #include <string> in cima al file.
A quel punto popoleranno il namespace std.
Il nome completo del tipo stringa è std::string.
Il letterale stringa usa il carattere delle virgolette doppie: ".
#include <string>
std::string w_berry_quote{"A well-made sentence, I think, is a thing of beauty."};
Puoi usare l'operatore + per concatenare le stringhe:
std::string original_title{"The School of Rock"};
std::string sequel_indicator{"Electric Boogaloo"};
std::string next_movie_title = original_title + " 2: " + sequel_indicator;
Per usare la libreria delle stringhe, devi sapere che è possibile chiamare una funzione che appartiene a un oggetto. Queste si chiamano funzioni membro. Più avanti nel programma del corso imparerai di più sulle funzioni membro e sul concetto di classe a esse collegato.
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"
Anche la funzione find è molto utile.
Si chiama come funzione membro sulla stringa e prende una stringa come argomento.
find restituisce la posizione, con indice che parte da zero, della prima occorrenza nella stringa.
std::string new_release{"apple released a new app!"};
new_release.find("app");
// => 0
new_release.find("e");
// => 4
In questo esercizio, elaborerai le righe di un report di log.
Ogni riga di log è una stringa formattata così: "[<LEVEL>]: <MESSAGE>".
Ci sono tre livelli di log diversi:
INFOWARNINGERRORHai tre compiti, ognuno dei quali riceverà una riga di log e ti chiederà di fare qualcosa con essa.
Implementa il metodo log_line::message per restituire il messaggio di una riga di log:
log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"
Implementa il metodo log_line::log_level per restituire il livello di log di una riga di log, che va restituito in maiuscolo:
log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"
Implementa il metodo log_line::reformat che riformatta la riga di log, mettendo prima il messaggio e poi il livello di log tra parentesi:
log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Iscriviti a Exercism per imparare e padroneggiare C++ con 19 concetti100 esercizi e il mentoring di persone reali, tutto gratis.