En general, no quieres reinventar la rueda cuando se trata de programar. Para muchos algoritmos estándar, es probable que alguien ya haya hecho el trabajo por ti.
include
Para incluir el contenido de otros archivos, C++ usa la directiva include.
Estas inclusiones deben declararse al principio del archivo.
Durante la compilación, la línea con la directiva se reemplaza por el contenido del archivo correspondiente.
Después de las inclusiones, los espacios de nombres se mantienen tal como están en el archivo original.
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);
}
Las bibliotecas estándar se incluyen con paréntesis angulares <> en lugar de comillas dobles ".
La diferencia está en la ubicación donde el compilador busca los archivos correspondientes.
En la versión con paréntesis 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"
Un string en C++ es un objeto mutable que representa una cadena de texto, es decir, una secuencia de caracteres (letras, dígitos, signos de puntuación, etc.).
Los string se manipulan llamando a sus métodos.
En C++, el tipo string y las funciones asociadas se deben incluir desde la biblioteca de strings antes de poder usarlos.
Puedes hacerlo agregando #include <string> al principio de tu archivo.
Con eso pasarán a formar parte del 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."};
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 recibe un string como argumento.
find devuelve la posición, con índice 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
En este ejercicio, vas a procesar líneas de un reporte de registro.
Cada línea de registro es un string con el siguiente formato: "[<LEVEL>]: <MESSAGE>".
Hay tres niveles de registro diferentes:
INFOWARNINGERRORTienes tres tareas, y cada una toma una línea de registro y te pide hacer algo con ella.
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"
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"
Implementa el método log_line::reformat, que reformatea la línea de registro poniendo primero el mensaje y después el nivel de registro, entre paréntesis:
log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.