Manipulando Strings
Produzido por Gustavo BarbosaTeoria
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 .
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 , 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 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 ) e fazemos ele receber o caractere ‘’. 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 e a nós passamos duas frases normais. No entanto, na linha 11, nós fazemos a receber os valores das e 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!