Recapitulando
Vimos que umas das diferenças entre o C e o C++ é a existência do tipo de dados strings para armazenar cadeia de caracteres, o que dispensa a criação de um array unidimensional do tipo char como fazíamos na linguagem C. Relembrou?
Agora que já vimos na aula passada o básico sobre POO podemos revelar que realidade o que o C++ possui é uma classe chamada string que permite essa manipulação de dados.
É importante entender que a string é uma classe porque ela vai fazer uso de alguns métodos ao invés de funções, por isso a sintaxe será um pouco diferente do que vimos até agora.
Trabalhando com Strings
Na maioria dos exemplos de códigos disponíveis na Web, o aluno encontrará os programas com strings iniciando com a diretiva #include <string> para incluir a biblioteca especializada em cadeia de caracteres.
No entanto, na maioria dos nossos testes com programas básicos em plataformas online e com o compilador G++ do Linux, comentar tal diretiva não teve efeito prático, mas vou mantê-la no nosso programa de exemplo.
- #include <iostream>
- #include <string>
- using namespace std;
- int main () {
- string nome = "Julio ";
- string sobrenome = "Ribeiro";
- cout << nome+sobrenome<<"\n";
- cout<<"Outra forma de concatenar:\n";
- string nomecompleto = nome.append(sobrenome);
- cout << nomecompleto<<endl;
- cout<<"Quantas letras tem o nome completo? ";
- cout<<nomecompleto.length();
- cout<<"\nOutra forma de ver o tamanho da string: ";
- cout<<nomecompleto.size();
- cout<<"\nPrimeira letra do nome: "<<nomecompleto[0];
- cout<<"\nOutra forma de fazer isso: " << nomecompleto.at(0);
- nomecompleto[0]='T';
- cout<<"\nAlterei a primeira letra: "<<nomecompleto;
- cout<<"\nUltima letra do nome: ";
- cout << nomecompleto[nomecompleto.length() - 1];
- return 0;
- }
Colocamos no exemplo acima alguns recursos que o estudante, mais cedo ou mais tarde, vai precisar usar em C++. Como já falei, na linha 2 estou chamando a biblioteca para uso de strings.
Na linha 6 e 7 instanciei a classe string criando dois objetos: nome e sobrenome e iniciei seus valores. Na linha 8 vemos como concatenar nome e sobrenome utilizando o operador +. Lembrando que <<"\n" está enviado para o objeto cout o caractere especial de quebra de linha.
Convém esclarecer que muitas vezes precisaremos usar o caractere especial para a inclusão de caracteres usados em instruções. Por exemplo \' permite colocar um apostrofo na string. Da mesma forma \" permite colocar uma aspas e \\ permite coloca a barra \.
Na linha 10 vemos o primeiro exemplo de uso de métodos da classe string com a instrução nome.append(sobrenome) onde estamos pedido adicionar o sobrenome ao nome. Uma alternativa ao uso da concatenação com o operador +.
Já na linha 11 vemos o uso de <<endl como alternativa ao <<"\n", pois essa instrução envia um final de linha para o cout.
Outro método da classe string que mostramos é o nomecompleto.length() que serve para ver o comprimento do objeto nomecompleto. O mesmo pode ser feito com nomecompleto.size() que mostra o tamanho da string.
O interessante é que o C++ herda do C os recursos de manipulação de cadeia de caracteres, assim podemos tratar um objeto string como um array unidimensional e trabalhar com seus elementos.
Assim a instrução nomecompleto[0] da linha 16 permite pegar o primeiro elemento da matriz unidimensional nomecompleto, recuperando a primeira letra do nome.
Na linha seguinte (17) temos uma alternativa a essa prática fazendo uso do método at() que também pega o primeiro caractere do objeto string com a instrução nomecompleto.at(0).
Já na linha 18 vemos como alterar o primeiro elemento do array unidimensional. Repare que eu não estou usando "aspas", pois é necessário o uso de 'apostrofo' para se referir a um char.
Por último vemos na linha 21 uma instrução mesclando a herança do C com os métodos do C++ ao utilizar um array unidimensional para pegar o último caractere do nome completo, fazendo uso da expressão nomecompleto.length() - 1 que significa tamanho da string -1 .
Não listei aqui como o estudante transforma uma string em maiúsculo ou minúsculo, mas você pode consultar o material de linguagem C que o método mostrado lá continua valendo.
Cabe esclarecer que em muito material de estudo pela Web o aluno encontrará exemplos de instanciamento dessa forma:
... ao invés dessa:
Elas terão o mesmo efeito prático, mas utilizei a segunda forma porque me parece mais amigável para o estudante. Na devida hora falaremos mais a respeito.
Referências
DEITEL, H. M. DEITEL, P. J. C++: Como programar. Pearson Education do Brasil. 2006.
GBDONLINE. Learn C++ Programming. Disponível em: <https://learn.onlinegdb.com/c%2B%2B_for_beginners> Acesso em 05 ago. 2024.
W3SCHOOLS. C++ Tutorial. Disponível em: <https://www.w3schools.com/cpp/default.asp> Acesso em 05 ago. 2024.