Γενικά, δεν θέλεις να ανακαλύπτεις ξανά τον τροχό όταν προγραμματίζεις. Για πολλούς καθιερωμένους αλγορίθμους, θα υπάρχει κάποιος που μπορεί να έχει κάνει ήδη τη δουλειά για σένα.
include
Για να ενσωματώσεις το περιεχόμενο άλλων αρχείων, η C++ χρησιμοποιεί την οδηγία include.
Αυτές οι ενσωματώσεις πρέπει να αναγράφονται στην αρχή του αρχείου.
Κατά τη μεταγλώττιση, η γραμμή με την οδηγία αντικαθίσταται από το περιεχόμενο του αντίστοιχου αρχείου.
Οι χώροι ονομάτων διατηρούνται όπως είναι στο αρχικό αρχείο μετά τις ενσωματώσεις.
Η πρότυπη βιβλιοθήκη προσφέρει πολλές κοινές συναρτήσεις, αλγορίθμους και δομές δεδομένων.
Η πρότυπη βιβλιοθήκη χρησιμοποιεί τον χώρο ονομάτων std.
Ένα παράδειγμα είναι η βιβλιοθήκη αριθμητικών υπολογισμών της C, cmath.
Παρέχει πολλές κοινές μαθηματικές πράξεις.
#include <cmath>
int cube_me(int a) {
// raise `a` to the third power
return std::pow(a, 3);
}
Οι πρότυπες βιβλιοθήκες ενσωματώνονται με γωνιακές αγκύλες <> αντί για διπλά εισαγωγικά ".
Η διαφορά είναι η τοποθεσία όπου ο μεταγλωττιστής αναζητά τα αντίστοιχα αρχεία.
Η αναζήτηση στο τρέχον έργο παραλείπεται για την έκδοση με τις γωνιακές αγκύλες, και ξεκινά απευθείας στους καταλόγους ενσωμάτωσης του συστήματος.
Αν θέλεις να ενσωματώσεις τοπικά αρχεία, θα χρησιμοποιούσες διπλά εισαγωγικά: #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>".
Υπάρχουν τρία διαφορετικά επίπεδα καταγραφής:
INFOWARNINGERRORΈχεις τρεις εργασίες και η καθεμία παίρνει μια γραμμή καταγραφής και σου ζητά να κάνεις κάτι με αυτήν.
Υλοποίησε τη μέθοδο log_line::message ώστε να επιστρέφει το μήνυμα μιας γραμμής καταγραφής:
log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"
Υλοποίησε τη μέθοδο log_line::log_level ώστε να επιστρέφει το επίπεδο καταγραφής μιας γραμμής καταγραφής, το οποίο πρέπει να επιστρέφεται με κεφαλαία γράμματα:
log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"
Υλοποίησε τη μέθοδο log_line::reformat που αναδιαμορφώνει τη γραμμή καταγραφής, βάζοντας πρώτα το μήνυμα και μετά το επίπεδο καταγραφής μέσα σε παρενθέσεις:
log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Γράψου στο Exercism για να μάθεις και να κατακτήσεις C++ με 19 έννοιες100 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.