Rutas
/
C++
C++
/
Ejercicios
/
Niveles de registro
Niveles de registro

Niveles de registro

Ejercicio de aprendizaje

Introducción

Inclusiones

En general, no quieres reinventar la rueda cuando se trata de programar. Para muchos algoritmos estándar, habrá alguien que quizá ya haya hecho tu trabajo por ti.

Directiva include

Para incluir el contenido de otros archivos, C++ usa la directiva include. Estas inclusiones deben indicarse al principio del archivo. Durante la compilación, la línea con la directiva se reemplaza por el contenido del archivo correspondiente. Los espacios de nombres se mantienen tal como están en el archivo original después de las inclusiones.

La biblioteca estándar

La biblioteca estándar ofrece muchas funciones, algoritmos y estructuras de datos comunes. La biblioteca estándar usa el espacio de nombres std.

Un ejemplo es la biblioteca numérica de C cmath. Proporciona muchas operaciones matemáticas comunes.

#include <cmath>

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

Las bibliotecas estándar se incluyen con corchetes angulares <> en lugar de comillas dobles ". La diferencia está en la ubicación en la que el compilador busca los archivos correspondientes. Para la versión con corchetes angulares, se omite la búsqueda en el proyecto actual y se empieza directamente en los directorios de inclusión del sistema. Si quieres incluir archivos locales, usarías comillas dobles: #include "myfile"

Strings

Un string en C++ es un objeto mutable que representa texto como una secuencia de caracteres (letras, dígitos, puntuación, etc.). Los strings se manipulan llamando a los métodos del string.

Biblioteca de strings

En C++, el tipo string y las funciones asociadas deben incluirse desde la biblioteca de strings antes de usarlos. Puedes hacerlo añadiendo #include <string> al principio de tu archivo. A continuación, rellenarán el espacio de nombres std. El nombre completo del tipo string es std::string. El literal de string usa el carácter de comillas dobles: ".

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

Operaciones comunes con strings

Puedes usar el operador + para concatenar strings:

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

Para usar la biblioteca de strings, necesitas saber que es posible llamar a una función que pertenece a un objeto. Estas se llaman funciones miembro. Más adelante en el temario, aprenderás más sobre las funciones miembro y el concepto de clase relacionado.

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 función find también es muy útil. Se llama como función miembro sobre el string y toma un string como argumento. find devuelve la posición indexada desde cero de la primera aparición en el string.

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

Instrucciones

En este ejercicio, vas a procesar las líneas de un informe de registro. Cada línea de registro es un string con el siguiente formato: "[<LEVEL>]: <MESSAGE>".

Hay tres niveles de registro distintos:

  • INFO
  • WARNING
  • ERROR

Tienes tres tareas; cada una recibe una línea de registro y te pide que hagas algo con ella.

1. Obtén el mensaje de una línea de registro

Implementa el método log_line::message para devolver el mensaje de una línea de registro:

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

2. Obtén el nivel de registro de una línea de registro

Implementa el método log_line::log_level para devolver el nivel de registro de una línea de registro, que debe devolverse en mayúsculas:

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

3. Reformatea una línea de registro

Implementa el método log_line::reformat, que reformatea la línea de registro y coloca el mensaje primero y el nivel de registro después, entre paréntesis:

log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
C++ Exercism

¿Listo para empezar Niveles de registro?

Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.