Buscar

Trabalhando com Strings em C/C++

Prévia do material em texto

www.tiexpert.net Pág. 1 de 4 
Strings
Agora que já vimos vetores, o próximo passo é entender as strings. Strings em C são tratados 
como vetores de tamanho determinado que podem armazenar qualquer caracter. 
Diferentemente de declarar apenas uma variável do tipo char (que armazena apenas um 
caracter) a string é uma cadeia de caracteres, ou seja, pode guardar quantos caracteres nós 
determinarmos.
Portanto, para declararmos uma string, basta nós criarmos um vetor de caracteres dessa 
forma:
char minhaString [50];
O único problema das strings são o seu consumo de recursos. Por exemplo, se levarmos em 
conta o vetor de caracteres que acabamos de criar, apesar dele conter 50 posições, nós só 
poderemos digitar até 49 letras. Isso ocorre porque toda string deve ter um caracter terminal, 
que geralmente é indicado pelo NULL (nulo). Isso quer dizer que um vetor de caracteres 
(string) de 50 posições terá 49 caracteres efetivos e um NULL indicando seu final.
Entrada de String
Para entrarmos com uma String no sistema usamos a mesma função de entrada padrão - cin.
Ou seja, se quisermos que o usuário digite seu nome faríamos da seguinte forma:
#include <iostream>
using namespace std;
int main (void){
 char minhaString [50];
 cout << "Digite seu nome: "<<endl;
 cin >> minhaString;
 system("cls");
 cout << "Seu nome e: " << minhaString << endl;
 system("pause");
 return EXIT_SUCCESS;
}
Agora, outro problema ao tratarmos de strings em C/C++. Embora a função cin consiga obter 
a string, ela sempre termina assim que pressionarmos o espaço a primeira vez, ou seja, ele só 
consegue pegar uma palavra por vez.
Então, como vamos obter uma linha inteira?
Bem, para obtermos uma linha inteira nós devemos fazer uso de um dos métodos encontrados 
dentro de cin - o método getline.
O método getline obtém uma linha de acordo com o tamanho definido no método. Então, o 
método getline utiliza dois parâmetros: 1°. O nome da string; 2°. O tamanho máximo que 
será preenchido.
Então, usando o mesmo exemplo, apenas mudaríamos a 6ª linha. Vejamos:
#include <iostream>
using namespace std;
int main (void){
 char minhaString [50];
 cout << "Digite seu nome: "<<endl;
 cin.getline (minhaString, 50);
 system ("cls");
 cout << "Seu nome e: " << minhaString << endl;
 system("pause");
 return EXIT_SUCCESS;
}
http://www.tiexpert.net/programacao/c/string.php
www.tiexpert.net Pág. 2 de 4 
Funções de String
Podemos fazer muitas coisas com Strings, como por exemplo, ver ser tamanho, juntar mais de 
uma palavra, comparar duas palavras diferentes, etc. Para isso, basta incluirmos uma 
biblioteca para tratamento de strings em C chamado - string.h.
Obter o tamanho de uma String
Para obter o tamanho de uma string usamos a função strlen (que é a junção do inglês String 
Length, que quer dizer, largura de string). Essa função retorna o número de caracteres 
utilizados (incluindo os espaços se houver). Ela recebe como argumento apenas a string que 
deve ser verificada e retorna o número de caracteres encontrados.
#include <iostream>
#include <string.h>
// ou também #include <cstring>
using namespace std;
int main (void){
 int tamanho;
 char nome [100];
 cout << "Digite seu nome: "<<endl;
 cin.getline (nome, 100);
 system ("cls");
 tamanho = strlen (nome);
 cout << "Seu nome tem " << tamanho << " caracteres." << endl;
 system("pause");
 return EXIT_SUCCESS;
}
Comparar duas strings
Há também uma forma de compararmos duas strings para ver ser ambas são iguais. A função 
que determina isso é strcmp. Embora C/C++ é case sensitive, ou seja, diferencia maiúsculas 
de minúsculas, isso não irá influenciar nessa função. Essa função retorna 0 se há igualdade 
entre as strings ou um número diferente de zero se não houver igualdade. Portanto, se 
quisermos fazer uma comparação de duas strings, procedemos da seguinte forma: strcmp 
(string1, string2). Vejamos o exemplo:
#include <iostream>
#include <cstring>
using namespace std;
int main (void){
 char palavra1 [25], palavra2 [25];
 cout << "Digite uma palavra: "<<endl;
 cin >> palavra1;
 cout << "Digite outra palavra: "<<endl;
 cin >> palavra2;
 system ("cls");
 if (strcmp (palavra1, palavra2) == 0)
 cout <<palavra1<<" e igual a "<<palavra2<<endl;
 else
 cout <<palavra1<<" e diferente de "<<palavra2<<endl;
 system ("pause");
 return EXIT_SUCCESS;
}
Copiar uma String
Para copiar uma string para outra string usamos strcpy (que vem de String copy). Essa função 
recebe dois argumentos: 1°. a string para onde será armazenada a cópia; 2°. a string que 
será copiada. Resumidamente, ele copia a segunda string para a primeira. Exemplo:
http://www.tiexpert.net/programacao/c/string.php
www.tiexpert.net Pág. 3 de 4 
#include <iostream>
#include <cstring>
using namespace std;
int main (void){
 char palavra1 [25], palavra2 [25];
 cout << "Digite uma palavra: "<<endl;
 cin >> palavra1;
 strcpy (palavra2, palavra1);
 system ("cls");
 cout<<"palavra1 = "<<palavra1<<endl;
 cout<<"palavra2 = "<<palavra2<<endl;
 system("pause");
 return EXIT_SUCCESS;
}
Concatenar uma String
Concatenar uma String que dizer juntar. De uma forma mais simplória, é como se 
disséssemos que a junção da palavra passa mais a palavra tempo é igual a passatempo. Ou 
seja, essa função - strcat - pega duas strings e junta o que tiver na primeira com o que tiver 
na segunda.
Tome cuidado: Se concatenarmos duas strings e uma delas ou ambas forem vazias ocorrerá 
um erro.
No exemplo abaixo, faremos o seguinte: vamos obter o valor de duas strings e concatená-las 
formando uma nova string.
#include <iostream>
#include <cstring>
using namespace std;
int main (void){
 char str1 [25], str2 [25];
 cout << "Digite uma palavra: "<<endl;
 cin >> str1;
 cout << "Digite outra palavra: "<<endl;
 cin >> str2;
 strcat (str1, str2);
 system ("cls");
 cout << "A juncao dessas duas strings ";
 cout << " e igual a "<<str1<<endl;
 system("pause");
 return EXIT_SUCCESS;
}
Lidar com strings é extremamente importante para a programação, pois a string é a base de 
qualquer arquivo e principalmente controles de rotina (por exemplo: rotinas e procedimentos 
de banco de dados, o SQL; endereçamento de arquivos; modificação de configurações...).
Abaixo esta um exemplo com todas as funções básicas de manipulação de string vistas até 
aqui. Faça o download e bom estudos.
#include <iostream>
#include <cstring>
using namespace std;
int main (void){
 char palavra1 [75], palavra2 [25], palavraConcatenada [100];
 cout << "Digite outra palavra ou uma pequena frase: "<<endl;
 cin.getline (palavra1, 75);
 cout << "Digite uma palavra: "<<endl;
 cin >> palavra2;
http://www.tiexpert.net/programacao/c/string.php
www.tiexpert.net Pág. 4 de 4 
 system ("cls");
 cout << "String-1"<<endl;
 cout << "-> "<<palavra1<<endl;
 cout << "tem "<<strlen(palavra1)<<" caracteres"<<endl<<endl;
 cout << "String-2"<<endl;
 cout << "-> "<<palavra2<<endl;
 cout << "tem "<<strlen(palavra2)<<" caracteres"<<endl<<endl;
 if (strcmp (palavra1, palavra2) == 0)
 cout << palavra1<<" e igual a "<<palavra2<<endl;
 else
 cout << palavra1<<" e diferente de "<<palavra2<<endl;
 strcpy (palavraConcatenada, palavra1);
 strcat (palavraConcatenada, palavra2);
 cout << "\nA concatenacao de "<<palavra1<<" com "<<palavra2;
 cout << " resulta em "<<palavraConcatenada<<endl;
 system("pause");
 return EXIT_SUCCESS;
}
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons
Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/
ou envie uma carta para Creative Commons, 171 SecondStreet, Suite 300, San Francisco, California 94105, USA.
http://www.tiexpert.net/programacao/c/string.php

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes