Share Button

Utilizar variáveis do tipo string em C++ ou em qualquer linguagem de programação que suporte esse tipo é essencial. Uma string é uma cadeia de caracteres, ou seja, uma sequencia de caracteres.

A biblioteca C++ possui uma grande quantidade funções que facilitam o uso do tipo string, tais como,  separar um string, retornar somente uma parte da string e entre outros. Para os exemplos, não vou utilizar nenhum método da biblioteca C++, apenas vou utilizar os comandos básicos. Para um futuro post irei exemplificar o uso desses métodos.

Para saber mais sobre C++, veja os seguintes links: C++ Reference e Cpluplus.com

Para declarar uma variável do tipo string em C++, basta informa o tipo string seguido do identificador. As variáveis podem ser inicializadas vazias ou com algum conteúdo, caso a variável não seja utilizada no momento da sua declaração é recomendável inicializar a variável com um valor vazio. Veja o exemplo abaixo:

#include <iostream>

using namespace std;

int main()
{

string nome = "";
string exemplo = "Este é um exemplo de string";

cout << "Digite o seu nome: ";     cin >> nome;

cout << "\nSeu nome é: " << nome << "\n";
cout << exemplo << "\n";

return 0;

}

Listagem 1

Acessando caracteres individuais de um string

Strings em C++, assim como em arranjos, permitem acesso ao caracter através dos colchetes [n] . Veja o exemplo abaixo:

#include <iostream>
using namespace std;

int main()
{
string frase = "A ligeira raposa marrom saltou sobre o cão preguiçoso.";

cout << frase[0] << "\n"; //Acessando o primeiro caracter da string
cout << frase[2] << "\n"; //Acessando o terceiro caracter da string

return 0;
}

Listagem 2

O próximo exemplo percorre todos os caracters da string:

#include <iostream>

using namespace std;

int main()
{
string frase = "A ligeira raposa marrom saltou sobre o cão preguiçoso.";

for (int i = 0; i < frase.length(); i++)
cout << frase[i] << "\n";

return 0;
}

Listagem 3

Um detalhe muito importante é que quando os caracteres do tipo string são acessados de forma individual, ou seja, informando o índice do caracter, o valor retornado será do tipo char e não do tipo string.  Por exemplo, se quisermos imprimir todos os caracteres, exceto a letra ‘a’ , será necessário realizar uma comparação utilizando as aspas simples – ‘ ‘ ao invés da aspas duplas – “”. Neste exemplo utilizo o método length() da string para retornar o seu tamanho e utilizar no laço de repetição para percorrer todos os caracteres.

#include <iostream>

using namespace std;

int main()
{
string frase = "A ligeira raposa marrom saltou sobre o cão preguiçoso.";

for (int i = 0; i < frase.length(); i++)
{
if (frase[i] != 'a')
cout << frase[i];

}

return 0;
}

Listagem 4

Separando partes de uma string

Uma forma simples de separar as partes de um string é percorrer cada caracter é comparando com uma ou varias condições desejada, como exemplo, separar a string quando encontrar o caracter  ponto e virgula – “;”.  No exemplo abaixo utilizo o espaço da string como condição, ou seja, sempre que encontrar um espaço o programa exibe uma palavra, o aplicativo repete esse processo comparando todos os caracteres.: Veja o exemplo abaixo:

#include <iostream>

using namespace std;

int main()
{
string frase = "A ligeira raposa marrom saltou sobre o cão preguiçoso.";
string aux = ""; //Variável auxiliar para armazenar a palavra

for (int i = 0; i < frase.length(); i++)
{
if (frase[i] == ' ') //Comparação de espaço tem que ser com aspas simples, pois é um caracter
{
cout << aux << "\n";
aux = ""; //Limpa a variável auxiliar para armazena a próxima palavra
}
else
aux = aux + frase[i]; //Armazena o caracter na variável auxiliar

}
cout << aux << "\n"; //Exibe a última palavra

return 0;
}

Listagem 5

Convertendo números em string

Para converter um número(long, float, int ou double) em string em C++ é necessário utilizar string stream. Os  string stream são muito semelhantes aos comandos de entrada é saida, ao invés de realizar uma entrada de dados através do teclado, os dados são informados através de uma varável ou de algum valor inserido diretamente. Para utilizar o string stream é necessário incluir o arquivo de cabeçalho sstream. Veja o exemplo abaixo:

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
stringstream stream;

return 0;
}

Listagem 6

Após declarar o objeto do tipo stringstream pode-se realizar a inserção de variáveis do tipo, long, float, int ou double no stream, para isso, deve-se utilizar o mesmo operador de inserção “<<” utilizado no comando cout. Para obter o conteúdo do stream basta utilizar o método str(). Veja o exemplo abaixo:

#include &amp;amp;lt;iostream&amp;amp;gt;
#include &amp;amp;lt;sstream&amp;amp;gt;

using namespace std;

int main()
{

stringstream stream;

stream &amp;amp;lt;&amp;amp;lt; 200.50;

cout &amp;amp;lt;&amp;amp;lt; stream.str(); //Será impresso 200.50
stream.str(""); //limpa o valor armazenado no buffer do string stream
return 0;
}

Listagem 7

Caso seja necessário, podem ser adicionadas diversas informações no stream, pois  a cada conteúdo inserido, não há perda de informações, pois os dados são “concatenados” com as valores anteriores.

#include &amp;amp;lt;iostream&amp;amp;gt;
#include &amp;amp;lt;sstream&amp;amp;gt;

using namespace std;

int main()
{
stringstream stream;

stream &amp;amp;lt;&amp;amp;lt; 200;
stream &amp;amp;lt;&amp;amp;lt; 100.50;
stream &amp;amp;lt;&amp;amp;lt; -1.7;

cout &amp;amp;lt;&amp;amp;lt; stream.str(); //Será impresso 200100.50-1.7
stream.str("");

return 0;
}

Listagem 8

Abaixo, segue um exemplo, no qual é solicitado ao usuário o seu nome e idade, logo em seguida é utilizado o stringstream para converter a idade do usuário para string, por fim, os dados são concatenados em um variável do tipo string.

#include &amp;amp;lt;iostream&amp;amp;gt;
#include &amp;amp;lt;sstream&amp;amp;gt;

using namespace std;

int main()
{
string nome  = "";
string dados = "";
int idade    = 0;

cout &amp;amp;lt;&amp;amp;lt; "Informe o seu nome: ";
cin &amp;amp;gt;&amp;amp;gt; nome;

cout &amp;amp;lt;&amp;amp;lt; "Informe a sua idade: ";
cin &amp;amp;gt;&amp;amp;gt; idade;

stringstream stream;

//Neste trecho de código é realizada um atribuição ao string stream
stream &amp;amp;lt;&amp;amp;lt; idade;

//A partir desse comando é chamado a função str do stringstream que converte
//o valor atribúido na linha anterior para string
dados = nome + " - " + stream.str();

cout &amp;amp;lt;&amp;amp;lt; "Seu dados completo é : " &amp;amp;lt;&amp;amp;lt; dados &amp;amp;lt;&amp;amp;lt; "\n";

return 0;
}

Listagem 9

Comments

comments

8 Thoughts to “Trabalhando com Strings em C++”

  1. Leandro

    Publicação muito interessante. Me ajudou muito.

    1. paulovmdutra

      Olá Leandro. Que bom que a publicação ajudou você. Em breve estarei publicando novos tutoriais.

  2. Diogenes

    Parabéns pelo post cara! Ajudou bastante!!

    1. paulovmdutra

      Obrigado Diogenes.

  3. Wallace Guimaraes

    Vlw boa postagem, ajudou bastante!

    1. paulovmdutra

      Obrigado Wallace

  4. Andre

    Ola, obrigado esta ajudando de mais!!

    1. paulovmdutra

      De nada 🙂

Leave a Comment