Biblioteca string

Ver Todos os Exercícios

Teoria

Introdução

Fala aí, tudo beleza?

Hoje nós vamos aprender sobre as strings, uma ferramenta muito útil para guardar textos no C++. O melhor de tudo, é que elas são muito semelhantes aos vetores, mas em muitas situações, podemos tratá-las como variáveis simples.

Então vamos ao trabalho!

Vetor do tipo char

Vamos analisar a seguinte situação: você está criando um personagem pra jogar um RPG e precisa dar um nome a ele, que será usado ao longo de todo o jogo pra se referir ao seu personagem. Isso implica que o jogo vai armazenar esse nome em algum lugar na memória do seu computador ou da nuvem.

Nós já sabemos que usamos variáveis para armazenar alguma informação num programa. Mas que tipo de variável nós podemos usar pra armazenar um nome?

Talvez você tenha pensado no tipo char, que sabemos que pode armazenar um caractere, mas isso seria equivalente a apenas uma letra do nome.

Nesse caso, nós podemos usar um vetor para armazenar a sequência de caracteres que compõem um nome ou até mesmo uma frase. Dessa forma, nós teríamos cada caractere armazenado numa localização específica e, ao imprimirmos todos juntos, podemos construir o nome que queremos.

Vamos simular uma mensagem simples de boas-vindas pra um usuário dessa forma:

Isso nos daria a seguinte saída:

Perceba que isso é um pouco diferente do que costumamos fazer com vetores, pois, na linha 8, estamos passando uma série que elementos de uma única vez. O que acontece é que, por se tratar de um vetor que armazena elementos do tipo char, o nosso programa já compreende que cada caractere digitado deve ser passado para uma posição desse vetor. Além disso, perceba que, após ter passado esses valores, é possível imprimir na tela todos os elementos desse vetor usando apenas o seu nome.

Se você já viu a linguagem C, pode perceber uma grande semelhança na forma de tratar esse tipo de situação. O fato é que um vetor que armazena caracteres é chamado de string e possui algumas características interessantes.

Mas é aqui que entra uma diferença entre as duas linguagens: no C++ existe uma maneira de simplificarmos todo esse trabalho com strings. Isso se deve ao C++ possuir uma biblioteca padrão para lidar com as strings, desse modo, não é necessário usar um vetor do tipo char para trabalharmos com uma string, nós podemos declarar a string diretamente!

Ficou um pouco confuso com todas essas informações? Calma aí que a gente vai simplificar tudo isso!

Simplificando com a biblioteca string

No C++, nós podemos usar uma biblioteca chamada s t r i n g , que nos permite declarar, usar e manipular strings de uma forma bem mais simples e eficaz. No lugar de declararmos um vetor do tipo char, podemos declarar diretamente uma string:

Há alguns detalhes a serem ressaltados, o primeiro é a inclusão da biblioteca que precisa ser feita, e o segundo é o uso do std:: , que também precisa ser usado quando incluímos a biblioteca iostream. Da mesma forma que ocorre para a biblioteca iostream podemos suprimir o uso do s t d : : por meio da inclusão de “ u s i n g   n a m e s p a c e   s t d ; no começo do código.

Dessa forma, podemos declarar uma s t r i n g da seguinte forma:

Bem simples e compacto, certo? As vantagens só vão aumentar!

Mais sobre strings

Como você viu, a maneira de declararmos uma string é bastante semelhante a como declaramos uma variável. Usamos a seguinte sintaxe:

s t r i n g           n o m e _ d a _ s t r i n g ;

Nós também podemos passar valores para uma string de maneira bem semelhante ao que fazemos com variáveis. Basta usarmos o sinal de recebe e colocar a sentença que queremos entre aspas duplas. Por exemplo:

Saída:

Perceba que podemos passar o valor para a string num comando isolado, como ocorre na linha 9, ou podemos passar no momento em que a declaramos, como na linha 11.

Além disso, podemos acessar elementos isolados de uma string de forma semelhante ao que fazemos com vetores. Para isso, acrescentamos os colchetes com o índice para indicar a localização do que querermos na string.

Dá uma olhada nesse exemplo:

Saída:

Perceba que, na linha 11, nós colocamos entre colchetes o índice 0 na frente do nome da string e o programa compreende que estamos nos referindo apenas ao primeiro caractere que compõe a string. Os índices, assim como em vetores, iniciam com 0 e vão até o tamanho da string - 1 .

Na string c u m p r i m e n t o usada no exemplo acima, nós teríamos os seguintes índices:

É importante ressaltar que cada elemento que compõe a string é contado, até mesmo o espaço em branco que separa as palavras e o ponto de exclamação no final.

Agora que nós já entendemos um pouco sobre as strings, que tal partirmos para os exercícios de fixação?

Então bora lá que eu vou estar te esperando!

Simplificando com a biblioteca string

Mais sobre strings

Exercícios Resolvidos

Exercício Resolvido #1

Descreva os passos necessários para declararmos uma string em C++.

Passo 1

Eai, tudo beleza?

Para declararmos uma string em C++, já vimos que há alguns passos que antecedem a declaração propriamente dita. Nós precisamos fazer a inclusão a biblioteca que permite usarmos as strings. Além disso, temos que acrescentar no nosso código o comando “using namespace std;”, que não é um fator obrigatório, mas nos permite suprimir o prefixo std, que é algo muito conveniente.

Agora podemos fazer a declaração propriamente dita, na qual basta declararmos o tipo, que seria string, o nome que usaremos para nos referenciarmos a essa string e finalizarmos com ponto e vírgula.

Resposta

Antes de declararmos:

  • Incluirmos a biblioteca string
  • Colocarmos o comando using namespace std;
  • Durante a declaração:

  • Escrevermos o tipo: string
  • Escrevemos o nome que usaremos para referenciar a string
  • Finalizamos a declaração com ponto e vírgula.

Exercício Resolvido #2

Algo muito comum no início de jogos, principalmente no gênero do RPG (Role-Playing Game), é pedir para que o jogador informe um nickname, ou seja, um apelido para o seu personagem. Sabendo disso, desenvolva um programa em C++ para simular esse início de jogo. Imprima uma mensagem de apresentação do jogo e peça para o usuário informar o seu nickname. Usando os seus conhecimentos da biblioteca string, salve o nome do informado pelo usuário em uma string e printe na tela uma mensagem de boas-vindas com esse nome nela.

Passo 1

Eai, tudo beleza?

Nessa questão, precisamos receber uma string do usuário, o que podemos fazer pela função cin, e imprimir essa string juntamente com uma mensagem.

Para iniciarmos esse programa, vamos incluir as bibliotecas necessárias: iostream, para recebermos dados do usuário e imprimirmos mensagens na tela, e a biblioteca string, para usarmos as strings do C++. Além disso, vamos acrescentar o comando para suprimirmos o uso do std.

Passo 2

Agora, vamos criar uma string para armazenarmos o nickname do usuário.

A seguir, vamos imprimir na tela a mensagem de apresentação do jogo e o pedido para informar o nickname. Nessa parte, sinta-se à vontade para ser criativo!

Passo 3

Precisamos receber o nickname do usuário a seguir. Para isso, usamos a função cin. E para finalizarmos o programa, vamos printar a mensagem de início do jogo com o nick do usuário.

Resposta

Exercício Resolvido #3

Muito famoso devido aos quadrinhos, filmes e animações, Bruce Wayne é um milionário que, durante a noite, assume o manto de Batman, um vigilante que combate o crime de Gotham.

Uma empresa está desenvolvendo um jogo sobre alguém que durante o dia é uma pessoa normal, mas que durante a noite é um vigilante, muito semelhante ao Batman, e te contrataram como programador. Um dos passos do jogo permite que o jogador personalize o nome do seu personagem, tanto o seu nome real quanto o seu nome como herói.

Usando o seu conhecimento em C++, desenvolva um programa que receba 3 strings do usuário, uma para ser o nome do personagem, outra para ser o nome de herói dele e uma para ser o nome da cidade em que o jogo se passará. Após isso, o programa deve printar a seguinte mensagem:

“_________, um homem normal durante o dia, mas um combatente dos crimes de _________ sob o manto de __________ durante a noite!”

Os espaços devem ser substituídos pelas strings passadas.

Passo 1

Eai, tudo tranquilo?

Nessa questão, nós usaremos strings para armazenar 3 informações que serão passadas pelo usuário: o nome do personagem, o nome de herói do personagem e nome da cidade do jogo.

Para iniciarmos o nosso código, vamos incluir as bibliotecas iostream e string:

A seguir, dentro a função main, vamos declarar as strings:

Passo 2

Agora, vamos imprimir na tela uma mensagem para o usuário informar o nome do seu personagem e passar o dado informado para a string nome:

Vamos fazer o mesmo para o nome de herói e o nome da cidade:

Passo 3

Para finalizar, basta imprimirmos a mensagem do enunciado, substituindo o nome do personagem, o seu apelido como herói e o nome da sua cidade nos espaços vazios:

Resposta

Exercício Resolvido #4

Faça um programa que receba um nome. Esse nome deve ser armazenado e após isso, deve ser impresso na tela com a seguinte mensagem o antecedendo: “Nome antes de ser alterado: “. Após isso, modifique a primeira letra do nome para um “R” e imprima na tela com a seguinte saída o antecedendo: “Nome após ser Alterado: “.

Exemplo:

Informe um nome: Samuel.

Nome antes de ser alterado: Samuel

Nome após ser alterado: Ramuel.

Passo 1

Eai, tudo beleza?

Nessa questão, vamos ter que receber uma string do usuário e modificá-la, que será o diferencial dessa questão, pois vamos ter que acessar um elemento individual da string para fazermos isso.

Começaremos o nosso código incluindo as bibliotecas iostream e string:

Agora, dentro da função main, vamos declarar a string na qual armazenaremos o nome informado pelo usuário:

Passo 2

Em seguida, vamos imprimir uma mensagem para que o usuário passe a string para o programa e vamos armazenar o dado passado para a string nome.

Com o dado recebido, já podemos imprimir a primeira mensagem com a string que nos foi passada:

Passo 3

A seguir, precisamos modificar o primeiro caractere da string armazenada. Para acessar o primeiro caractere, usamos os colchetes e informamos a sua posição - 1 . Nesse caso, usamos n o m e [ 0 ] . Sabendo disso, precisamos fazer com que n o m e [ 0 ] receba um ‘R’. Para isso, basta o seguinte comando:

É importante ressaltarmos o uso de aspas simples, pois, ao acessarmos um valor da string estamos lidando com um caractere.

Portanto, basta imprimirmos a última mensagem com o novo valor da string.

Resposta

Exercício Resolvido #5

Usando os seus conhecimentos em C++ e em strings, descreva a saída do seguinte programa:

Passo 1

Eai, tudo beleza?

Nessa questão, precisamos compreender o código que nos foi informado para sabermos o que ele nos dará como saída.

Vamos analisar o código parte por parte. Perceba que ele inicia incluindo as bibliotecas iostream e string, o que permite ao seu programa a interação com o usuário e o uso de strings.

Em seguida, na linha 7 do código, é declarada uma string, e, na linha 8, um valor é passado para essa string.

Passo 2

O diferencial desse código começa na linha 10, onde é usada a estrutura de for each, na qual é declarada uma variável cujo valor vai se modificando a cada repetição do loop, admitindo sempre um valor armazenado no array informado, começando pelo dado na primeira posição e indo até aquele na última posição.

Uma string armazena caracteres que podem ser acessados individualmente, assim como num vetor. Logo, é possível iterar sobre uma string usando o for each. Dessa forma, a variável character vai admitir, a cada laço de repetição, o valor de um caractere contido em str.

Como o loop faz com que, a cada repetição, o caractere armazenado em character seja impresso na tela, o resultado será toda a sentença armazenada em str ser impressa na tela.

Resposta

E u   s o u   u m a   s t r i n g !

Exercício Resolvido #6

Faça um programa que recebe uma palavra como input do usuário. Após isso, esse código deve imprimir como saída a quantidade de vezes que a letra “a” aparece na palavra informada.

Passo 1

Eai, tudo beleza?

Nessa questão, nós temos que fazer um programa que recebe uma string e temos que analisar a string recebida para sabermos quantas vezes determinado caractere aparece nessa string.

Vamos começar o nosso código incluindo as bibliotecas necessárias e declarando a nossa string dentro da função main. Além disso, vamos iniciar uma variável acumuladora para armazenar a quantidade de vezes que o caractere ‘a’ aparece.

Passo 2

Vamos imprimir na tela uma mensagem falando para o usuário digitar uma palavra e, logo em seguida, vamos passar esse valor informado a nossa string:

Passo 3

Em seguida, vamos utilizar a estrutura de repetição f o r   e a c h e, dentro desse loop, vamos checar cada caractere pertencente à variável p a l a v r a . Caso esse caractere for igual à ‘a’, vamos incrementar o valor do nosso contador em 1 . Dessa forma, ao final do loop, teremos, armazenada na variável c o n t , a quantidade de vezes que a letra ‘a’ aparece na palavra informada pelo usuário.

Por fim, basta imprimirmos uma mensagem informando isso ao usuário:

Resposta

Exercício Resolvido #7

Faça um programa em C++ que recebe dois inputs do usuário: uma palavra e uma letra. Seu programa deve informar ao usuário se a letra recebida está ou não presente na palavra.

Passo 1

Eai, tudo beleza?

Nessa questão, nós temos que armazenar uma string e um caractere informados pelo usuário e devemos checar se o caractere está contido dentro da string.

Para iniciarmos o nosso código, vamos incluir as bibliotecas necessárias e, dentro da main, vamos declarar 3 variáveis: uma string, para armazenar a palavra informada pelo usuário, um char, para armazenar o caractere informado pelo usuário, e um bool, que vai iniciar com o valor f a l s e e, caso a letra esteja contida na palavra, vai ter o seu valor mudado para t r u e .

Passo 2

Agora, vamos imprimir uma mensagem na tela informando que o usuário deve passar uma palavra e, em seguida, vamos armazenar o dado passado pelo usuário na string que declaramos. Vamos fazer o mesmo para o caractere.

Após isso, vamos fazer um laço de repetição para checarmos cada caractere dessa palavra e vamos comparar eles com o caractere informado pelo usuário. Caso o caractere informado seja igual a algum caractere da string, ou seja, a letra está presente na palavra, vamos mudar o valor da variável b p r e s e n t e para t r u e .

Passo 3

Por fim, basta utilizarmos um condicional para checar o valor de b p r e s e n t e e, dependendo do seu valor, o programa deve imprimir uma mensagem informando que a letra está ou não presente na palavra.

Resposta

Exercício Resolvido #8

Faça um programa que modifique a stringMeu nome eh neves. Eu sou uma string de 54 caracteres.” para que todas as letras ‘a’ e ‘e’, maiúsculas ou minúsculas, sejam modificadas para 4 e 3, respectivamente. Imprima na tela a frase antes e depois de ser modificada.

Passo 1

Eai, tudo beleza?

Nessa questão, nós temos que declarar uma string para armazenar a sentença que está no enunciado e fazer algumas modificações nela.

Vamos iniciar o nosso código incluindo as bibliotecas i o s t r e a m e s t r i n g declarando a nossa função m a i n . Dentro da função m a i n , vamos declarar uma string para armazenar a frase do enunciado e vamos imprimi-la na tela.

Passo 2

Agora, vamos fazer um loop para analisarmos cada caractere da string n e v e s . Como está na própria sentença, essa string possui 54 caracteres, dessa forma, vamos fazer o nosso loop ir de 0 até 53 . Dessa forma, vamos fazer dois condicionais para checar o valor do caractere. Se ele for igual à ‘a’ ou ‘A’, vamos mudar o valor para ‘4’. Se ele for igual a ‘e’ ou ‘E’, vamos mudar o valor para ‘3’.

Passo 3

Por fim, basta imprimir a sentença estando modificada.

Resposta