Διαδρομές
/
C++
C++
/
Ασκήσεις
/
Επίπεδα καταγραφής
Επίπεδα καταγραφής

Επίπεδα καταγραφής

Άσκηση εκμάθησης

Εισαγωγή

Ενσωμάτωση αρχείων

Γενικά, δεν θέλεις να ανακαλύπτεις ξανά τον τροχό όταν προγραμματίζεις. Για πολλούς καθιερωμένους αλγορίθμους, θα υπάρχει κάποιος που μπορεί να έχει κάνει ήδη τη δουλειά για σένα.

Οδηγία include

Για να ενσωματώσεις το περιεχόμενο άλλων αρχείων, η C++ χρησιμοποιεί την οδηγία include. Αυτές οι ενσωματώσεις πρέπει να αναγράφονται στην αρχή του αρχείου. Κατά τη μεταγλώττιση, η γραμμή με την οδηγία αντικαθίσταται από το περιεχόμενο του αντίστοιχου αρχείου. Οι χώροι ονομάτων διατηρούνται όπως είναι στο αρχικό αρχείο μετά τις ενσωματώσεις.

Η πρότυπη βιβλιοθήκη

Η πρότυπη βιβλιοθήκη προσφέρει πολλές κοινές συναρτήσεις, αλγορίθμους και δομές δεδομένων. Η πρότυπη βιβλιοθήκη χρησιμοποιεί τον χώρο ονομάτων std.

Ένα παράδειγμα είναι η βιβλιοθήκη αριθμητικών υπολογισμών της C, cmath. Παρέχει πολλές κοινές μαθηματικές πράξεις.

#include <cmath>

int cube_me(int a) {
    // raise `a` to the third power
    return std::pow(a, 3);
}
Note

Οι πρότυπες βιβλιοθήκες ενσωματώνονται με γωνιακές αγκύλες <> αντί για διπλά εισαγωγικά ". Η διαφορά είναι η τοποθεσία όπου ο μεταγλωττιστής αναζητά τα αντίστοιχα αρχεία. Η αναζήτηση στο τρέχον έργο παραλείπεται για την έκδοση με τις γωνιακές αγκύλες, και ξεκινά απευθείας στους καταλόγους ενσωμάτωσης του συστήματος. Αν θέλεις να ενσωματώσεις τοπικά αρχεία, θα χρησιμοποιούσες διπλά εισαγωγικά: #include "myfile"

Συμβολοσειρές

Μια string στη C++ είναι ένα μεταβλητό αντικείμενο που αναπαριστά κείμενο ως ακολουθία χαρακτήρων (γράμματα, ψηφία, σημεία στίξης κ.λπ.). Οι συμβολοσειρές χειρίζονται καλώντας τις μεθόδους της συμβολοσειράς.

Η βιβλιοθήκη συμβολοσειρών

Στη C++ ο τύπος συμβολοσειράς και οι σχετικές συναρτήσεις πρέπει να ενσωματωθούν από τη βιβλιοθήκη συμβολοσειρών πριν από τη χρήση. Μπορείς να το κάνεις προσθέτοντας #include <string> στην αρχή του αρχείου σου. Έτσι, θα προστεθούν στον χώρο ονομάτων std. Το πλήρως προσδιορισμένο όνομα του τύπου συμβολοσειράς είναι std::string. Το κυριολεκτικό συμβολοσειράς χρησιμοποιεί τον χαρακτήρα των διπλών εισαγωγικών: ".

#include <string>
std::string w_berry_quote{"A well-made sentence, I think, is a thing of beauty."};

Συνήθεις πράξεις συμβολοσειρών

Μπορείς να χρησιμοποιήσεις τον τελεστή + για να συνενώσεις συμβολοσειρές:

std::string original_title{"The School of Rock"};
std::string sequel_indicator{"Electric Boogaloo"};
std::string next_movie_title = original_title + " 2: " + sequel_indicator;

Για να χρησιμοποιήσεις τη βιβλιοθήκη συμβολοσειρών, πρέπει να ξέρεις ότι είναι δυνατό να καλέσεις μια συνάρτηση που ανήκει σε ένα αντικείμενο. Αυτές ονομάζονται συναρτήσεις μέλους. Αργότερα στο πρόγραμμα σπουδών, θα μάθεις περισσότερα για τις συναρτήσεις μέλους και τη σχετική έννοια της κλάσης.

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"

Η συνάρτηση find είναι επίσης πολύ χρήσιμη. Καλείται ως συνάρτηση μέλους στη συμβολοσειρά και δέχεται μια συμβολοσειρά ως όρισμα. Η find επιστρέφει τη θέση της πρώτης εμφάνισης στη συμβολοσειρά, μετρώντας από το μηδέν.

std::string new_release{"apple released a new app!"};
new_release.find("app");
// => 0
new_release.find("e");
// => 4

Οδηγίες

Σε αυτή την άσκηση, θα επεξεργάζεσαι γραμμές από μια αναφορά καταγραφών. Κάθε γραμμή καταγραφής είναι μια συμβολοσειρά με την εξής μορφή: "[<LEVEL>]: <MESSAGE>".

Υπάρχουν τρία διαφορετικά επίπεδα καταγραφής:

  • INFO
  • WARNING
  • ERROR

Έχεις τρεις εργασίες και η καθεμία παίρνει μια γραμμή καταγραφής και σου ζητά να κάνεις κάτι με αυτήν.

1. Πάρε το μήνυμα από μια γραμμή καταγραφής

Υλοποίησε τη μέθοδο log_line::message ώστε να επιστρέφει το μήνυμα μιας γραμμής καταγραφής:

log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"

2. Πάρε το επίπεδο καταγραφής από μια γραμμή καταγραφής

Υλοποίησε τη μέθοδο log_line::log_level ώστε να επιστρέφει το επίπεδο καταγραφής μιας γραμμής καταγραφής, το οποίο πρέπει να επιστρέφεται με κεφαλαία γράμματα:

log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"

3. Αναδιαμόρφωσε μια γραμμή καταγραφής

Υλοποίησε τη μέθοδο log_line::reformat που αναδιαμορφώνει τη γραμμή καταγραφής, βάζοντας πρώτα το μήνυμα και μετά το επίπεδο καταγραφής μέσα σε παρενθέσεις:

log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
C++ Exercism

Έτοιμος να ξεκινήσεις την άσκηση Επίπεδα καταγραφής;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις C++ με 19 έννοιες100 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.