Teoria

Introdução

Opa, tudo bem?

Nesse tópico nós vamos abordar com mais detalhes as strings e entender como podemos manipulá-las no nosso código.

Então bora lá!

getLine vs cin

Antes de tudo, vamos compreender melhor o processo de passar uma informação para uma string, analisando um exemplo clássico. Usaremos um código que recebe o nome do usuário e o imprime logo em seguida:

Na linha 11 desse código, nós usamos a função cin para armazenar o que o usuário digitar na string nome. Dessa forma, temos uma saída da seguinte maneira:

Perceba que, embora tenhamos passada o nome “Programador do Responde ai”, o nosso código armazenou apenas a primeira palavra na string. Isso ocorre porque a função cin interpreta o espaço como o final da informação que deve ser armazenada e devemos levar essa limitação em consideração na hora de escrever um código.

Isso pode ser corrigido usando uma função própria da biblioteca string: a função getline. Essa função vai armazenar na string tudo que for passado até uma quebra de linha, o que seria, na prática, quando o usuário apertar a tecla Enter.

Modificando o nosso código, teríamos:

Dessa vez, na linha 11, estamos usando a função getline, que recebe 2 argumentos: o primeiro é a função cin, e o segundo é a string na qual queremos armazenar a informação passada.

Esse novo código nos dá a seguinte saída:

Perceba que agora temos o nome completo armazenado na s t r i n g   n o m e .

String em funções

A relação entre uma string e uma função é bem semelhante ao que já fazemos. Basicamente, podemos passar uma string para uma função da mesma maneira que fazemos com uma variável. Ou seja, podemos declarar a função recebendo o parâmetro string, quando queremos passar para ela uma string ou podemos declarar a função como do tipo string quando queremos que ela retorne uma string.

Vamos analisar o exemplo:

Nesse código, nós criamos a função I m p r i m i r S t r i n g , que basicamente, deve imprimir a string que passamos para ele, como é especificado na linha 16. Isso nos daria a seguinte saída:

Então, podemos compreender o relacionamento das strings com a funções da mesma maneira que as variáveis (como int, float, char) interagem com as funções.

Manipulando uma string

Uma string para o C++ é algo mutável, ou seja, podemos modificá-la ao longo do nosso programa. Nesse contexto, existem algumas maneiras de fazer isso.

Uma delas é modificando um caractere da string. Isso funciona de forma bem semelhante a modificar o valor armazenado em um vetor. Para isso, nós usamos o nome da string e, entre colchetes, a posição do caractere que queremos modificar.

Nesse código, nós iniciamos a s t r i n g   s t r com a seguinte frase: “Eu sou uma String”. Na linha 11, nós acessamos o caractere que está no índice 9 (vale lembrar que os índices iniciam com 0 e vão até o tamanho da string –   1 ) e fazemos ele receber o caractere ‘ 4 ’. Após isso, temos a seguinte saída:

Ou seja, nós modificamos uma letra da frase armazenada. Isso é uma das maneiras de alterarmos uma string.

Uma outra maneira que podemos fazer é concatenando strings, o que pode ser entendido como somando strings. Vamos analisar o seguinte código como exemplo:

Na linha 7, nós declaramos 2 strings e nas linhas 9 até a 10, nós passamos valores para essas strings. Perceba que, para a s t r 1 e a s t r 2 nós passamos duas frases normais. No entanto, na linha 11, nós fazemos a s t r 1 receber os valores das s t r 1 e s t r 2 somados. Para as strings, somar os seus valores significa fazer uma concatenação estre as strings, ou seja, é como se nós juntássemos os seus valores na ordem em que eles são somados.

Nesse caso, para o código acima, nós teríamos essa saída:

Existem diversas outras maneiras de modificarmos uma string, além de podermos comparar strings e localizarmos elementos dentro delas. Podemos fazer essas operações utilizando funções e métodos próprios da biblioteca string.

Mas como são muitos recursos, não vou detalhar cada um aqui e quando você precisar de uma função específica, pode encontrar os detalhes na documentação online dessa biblioteca pesquisando por ‘C++ strings’.

Agora que já temos mais noção de como trabalharmos com as strings, podemos fazer algumas questões para fixarmos melhor esse conteúdo. Então bora lá, estou te esperando!

String em funções

Manipulando uma string