Kurzusok
/
C++
C++
/
Feladatok
/
Logszintek
Logszintek

Logszintek

Tanulófeladat

Bevezetés

Include-ok

Programozás közben általában nem akarod újra feltalálni a kereket. Sok szabványos algoritmus esetében lehet, hogy valaki már elvégezte helyetted a munkát.

Az include direktíva

Más fájlok tartalmának beillesztésére a C++ az include direktívát használja. Ezeket az include-okat a fájl elején kell megadni. Fordítás közben a direktívát tartalmazó sor helyére a megfelelő fájl tartalma kerül. Az include-ok után a névterek ugyanolyanok maradnak, mint az eredeti fájlban.

A szabványos könyvtár

A szabványos könyvtár sok gyakori függvényt, algoritmust és adatszerkezetet kínál. A szabványos könyvtár a std névteret használja.

Egy példa erre a C numerikus könyvtára, a cmath. Sok gyakori matematikai műveletet biztosít.

#include <cmath>

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

A szabványos könyvtárakat csúcsos zárójellel <> illesztjük be a kettős idézőjel " helyett. A különbség az, hogy a fordító hol keresi az adott fájlokat. A csúcsos zárójeles változatnál az aktuális projektben való keresés kimarad, és a keresés rögtön a rendszer include-könyvtáraiban indul. Ha helyi fájlokat szeretnél beilleszteni, kettős idézőjelet használnál: #include "myfile"

Stringek

A C++-ban a string egy módosítható objektum, amely szöveget karakterek (betűk, számjegyek, írásjelek stb.) sorozataként ábrázol. A stringeket a string metódusainak meghívásával lehet kezelni.

A stringek könyvtára

A C++-ban a string típust és a hozzá tartozó függvényeket használat előtt be kell illeszteni a stringek könyvtárából. Ezt úgy teheted meg, hogy a fájlod elejére beírod: #include <string>. Ezek ekkor a std névtérben lesznek elérhetők. A string típus teljesen minősített neve std::string. A string literál a kettős idézőjel karaktert használja: ".

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

Gyakori stringműveletek

A + operátorral össze tudod fűzni a stringeket:

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

A stringek könyvtárának használatához tudnod kell, hogy meg lehet hívni egy objektumhoz tartozó függvényt. Ezeket tagfüggvényeknek nevezzük. A tanterv későbbi részében többet is megtudsz a tagfüggvényekről és a hozzájuk kapcsolódó osztályfogalomról.

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"

A find függvény is nagyon hasznos. A stringen tagfüggvényként hívjuk meg, és argumentumként egy stringet kap. A find visszaadja az adott részstring stringen belüli első előfordulásának nullától induló indexű pozícióját.

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

Utasítások

Ebben a feladatban egy naplózott jelentés soraival fogsz dolgozni. Minden naplósor egy string, amelynek formátuma a következő: "[<LEVEL>]: <MESSAGE>".

Három különböző naplózási szint van:

  • INFO
  • WARNING
  • ERROR

Három részfeladatod van; mindegyik kap egy naplósort, és valamit tenned kell vele.

1. Keresd ki az üzenetet egy naplósorból

Valósítsd meg a log_line::message metódust, amely visszaadja egy naplósor üzenetét:

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

2. Keresd ki a naplózási szintet egy naplósorból

Valósítsd meg a log_line::log_level metódust, amely visszaadja egy naplósor naplózási szintjét; a szintet nagybetűvel kell visszaadni:

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

3. Formázd újra a naplósort

Valósítsd meg a log_line::reformat metódust, amely újraformázza a naplósort: az üzenet kerül előre, utána pedig zárójelben a naplózási szint következik:

log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C++ Exercism

Készen állsz elkezdeni a(z) Logszintek feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C++ nyelvet 19 fogalom100 feladat segítségével, valódi emberi mentorálással, mindez ingyen.