Em geral, você não quer reinventar a roda quando o assunto é programação. Para muitos algoritmos padrão, provavelmente já existe alguém que pode ter feito o seu trabalho por você.
include
Para incluir o conteúdo de outros arquivos, o C++ usa a diretiva include.
Esses includes devem ser declarados no topo do arquivo.
Durante a compilação, a linha com a diretiva é substituída pelo conteúdo do arquivo correspondente.
Os namespaces são mantidos como estão no arquivo original depois dos includes.
A biblioteca padrão oferece muitas funções, algoritmos e estruturas de dados comuns.
A biblioteca padrão usa o namespace std.
Um exemplo é a biblioteca numérica do C, cmath.
Ela fornece muitas operações matemáticas comuns.
#include <cmath>
int cube_me(int a) {
// raise `a` to the third power
return std::pow(a, 3);
}
As bibliotecas padrão são incluídas com sinais de maior e menor <> em vez de aspas duplas ".
A diferença está no local onde o compilador procura os arquivos correspondentes.
Na versão com sinais de maior e menor, a busca no projeto atual é ignorada e o compilador começa diretamente nos diretórios de includes do sistema.
Se você quiser incluir arquivos locais, use aspas duplas: #include "myfile"
Uma string em C++ é um objeto mutável que representa texto como uma sequência de caracteres (letras, dígitos, pontuação etc.).
As strings são manipuladas chamando os métodos da string.
Em C++, o tipo string e as funções associadas precisam ser incluídos da biblioteca de strings antes do uso.
Você pode fazer isso adicionando #include <string> ao topo do seu arquivo.
Eles então populam o namespace std.
O nome totalmente qualificado do tipo string é std::string.
O literal de string usa o caractere de aspas duplas: ".
#include <string>
std::string w_berry_quote{"A well-made sentence, I think, is a thing of beauty."};
Você pode usar o 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 a biblioteca de strings, você precisa saber que é possível chamar uma função que pertence a um objeto. Essas são chamadas de funções membro. Mais adiante no curso, você vai aprender mais sobre funções membro e o conceito de classe 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"
A função find também é muito útil.
Ela é chamada como uma função membro da string e recebe uma string como argumento.
find retorna a posição, com índice a partir de zero, da primeira ocorrência na string.
std::string new_release{"apple released a new app!"};
new_release.find("app");
// => 0
new_release.find("e");
// => 4
Neste exercício, você vai processar linhas de um relatório de log.
Cada linha de log é uma string formatada assim: "[<LEVEL>]: <MESSAGE>".
Existem três níveis de log diferentes:
INFOWARNINGERRORVocê tem três tarefas, e cada uma delas recebe uma linha de log e pede que você faça algo com ela.
Implemente o método log_line::message para retornar a mensagem de uma linha de log:
log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"
Implemente o método log_line::log_level para retornar o nível de log de uma linha de log, que deve ser retornado em letras maiúsculas:
log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"
Implemente o método log_line::reformat, que reformata a linha de log, colocando a mensagem primeiro e o nível de log depois dela, entre parênteses:
log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Crie sua conta no Exercism para aprender e dominar C++ com 19 conceitos100 exercícios e mentoria humana de verdade, tudo de graça.