Em geral, não queres reinventar a roda quando se trata de programação. Para muitos algoritmos padrão, é provável que já alguém tenha feito esse trabalho por ti.
Para incluir o conteúdo de outros ficheiros, o C++ usa a diretiva include.
Estas inclusões devem ser declaradas no topo do ficheiro.
Durante a compilação, a linha com a diretiva é substituída pelo conteúdo do ficheiro correspondente.
Depois das inclusões, os namespaces mantêm-se tal como estão no ficheiro original.
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 de funções numéricas do C, cmath.
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 os sinais de menor e maior <> em vez de aspas duplas ".
A diferença está no local onde o compilador procura os ficheiros correspondentes.
Na versão com os sinais de menor e maior, a procura no projeto atual é ignorada e começa diretamente nos diretórios de inclusão do sistema.
Se quiseres incluir ficheiros locais, usas aspas duplas: #include "myfile"
Uma string em C++ é um objeto mutável que representa texto como uma sequência de carateres (letras, algarismos, pontuação, etc.).
As strings manipulam-se através da chamada dos métodos da string.
Em C++, tens de incluir o tipo string e as funções associadas a partir da biblioteca de strings antes de os usares.
Podes fazê-lo adicionando #include <string> no topo do teu ficheiro.
Ficam então disponíveis no namespace std.
O nome completo do tipo string é std::string.
O literal de string usa o caráter das aspas duplas: ".
#include <string>
std::string w_berry_quote{"A well-made sentence, I think, is a thing of beauty."};
Podes 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 usares a biblioteca de strings, precisas de saber que é possível chamar uma função que pertence a um objeto. Estas chamam-se funções membro. Mais à frente no programa de estudos, vais aprender mais sobre funções membro e o conceito de classe associado.
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.
É chamada como função membro da string e recebe uma string como argumento.
find devolve a posição, com o índice a começar em 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, vais processar linhas de um relatório de log.
Cada linha de log é uma string com o seguinte formato: "[<LEVEL>]: <MESSAGE>".
Existem três níveis de log diferentes:
INFOWARNINGERRORTens três tarefas e cada uma recebe uma linha de log e pede-te que faças algo com ela.
Implementa o método log_line::message para devolver a mensagem de uma linha de log:
log_line::message("[ERROR]: Invalid operation")
// => "Invalid operation"
Implementa o método log_line::log_level para devolver o nível de log de uma linha de log, que deve ser devolvido em maiúsculas:
log_line::log_level("[ERROR]: Invalid operation")
// => "ERROR"
Implementa o método log_line::reformat, que reformata a linha de log, colocando a mensagem primeiro e o nível de log depois, entre parênteses:
log_line::reformat("[INFO]: Operation completed")
// => "Operation completed (INFO)"
Inscreve-te no Exercism para aprenderes e dominares C++ com 19 conceitos100 exercícios, e mentoria humana real, tudo grátis.