C++

Trabalhando com Strings em C++

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 <iostream>
#include <sstream>


using namespace std;

int main()
{

    stringstream stream;

    stream << 200.50;

    cout << 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 <iostream>
#include <sstream>

using namespace std;

int main()
{
    stringstream stream;

    stream << 200;
    stream << 100.50;
    stream << -1.7;

    cout << 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 <iostream>
#include <sstream>

using namespace std;

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

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

	cout << "Informe a sua idade: ";
	cin >> idade;

	stringstream stream;

	//Neste trecho de código é realizada um atribuição ao string stream
	stream << 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 << "Seu dados completo é : " << dados << "\n";

    return 0;
}

Listagem 9

Comments

comments

8 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *