Buscar

08. STRINGS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 22 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Strings - Funções de 
Tratamento de Caractere
String
• Strings são utilizadas para representar 
sequências de caracteres, como 
frases, nomes de pessoas, cidades, 
ruas, países, etc.
03/08/13
3
Funções de Tratamento de 
Caractere
� Pode-se definir um vetor de tipo char, 
onde cada posição representa um 
caractere.
� O fim da cadeia é identificado com o 
caractere nulo, por meio do ‘\0’.
� Este tipo de vetor possui o nome de string.
4
Declaração de String
� char nome[7];
� char nome[ ] = {'U', 'N', 'I', 'F', 'E', 'I', '\0'};
� char nome[ ] = "UNIFEI"; 
� char nome[7] = "UNIFEI";
5
Declaração de String
� É preciso declarar vetores de caracteres como 
sendo um caracter mais longo que a maior 
string que eles devem guardar (devido ao 
caracter nulo).
� A linguagem C/C++ possui funções para 
manipulação de vetores de caracteres presentes 
na biblioteca string.h ou cstring. Para consultar 
funções dessa biblioteca acesse: 
http://www.cplusplus.com/reference/clibrary/cstring/
6
Manipulando Cadeias de 
Caracteres
� strlen (str1) – obtém o tamanho de uma 
cadeia de caracteres str1 (o caractere nulo 
não é considerado);
char nome[19] = "Teodomiro Santiago"; 
int tamanho = strlen(nome); 
for (int i =0; i < tamanho ; i++){ 
cout<<"\nCaracter n."<<i+1<<":"<<nome[i];
}
7
Manipulando Cadeias de 
Caracteres
� strcat (str1, str2) – concatena a cadeia 
identificada por str2 à cadeia str1. A 
segunda permanece inalterada.
char stringDestino[40] = "Prezado Sr. "; 
char stringOrigem[] = "Joao Pereira"; 
strcat(stringDestino, stringOrigem); 
cout << "String Destino: " << stringDestino <<"\n"; 
cout << "String Origem: "<< stringOrigem;
A saída da tela será: 
String Destino: Prezado Sr. Joao Pereira
String Origem: Joao Pereira
8
Manipulando Cadeias de 
Caracteres
� strcmp (str1, str2) – compara duas cadeias 
de caracteres e retorna um número inteiro, 
que pode ser (maiúscula e minúscula são 
diferentes):
� Zero – se as duas cadeias são iguais;
� Número menor que 0 – cadeia str1 for 
alfabeticamente menor que str2;
� Número maior que 0 – cadeia str1 for 
alfabeticamente maior que str2.
9
Manipulando Cadeias de 
Caracteres
char cor[] = "azul"; 
char resposta[10]; 
cout << "Qual e a cor do ceu? \n"; 
gets(resposta); 
cout << strcmp(cor, resposta);
Caso o usuário insira como resposta azul, o 
valor impresso na tela será 0, para qualquer 
outra entrada, o valor será diferente de 0.
10
Manipulando Cadeias de 
Caracteres
� stricmp (str1, str2) – compara duas cadeias 
de caracteres e retorna um número inteiro 
que pode ser (maiúscula e minúscula são 
iguais):
� Zero – se as duas cadeias são iguais;
� Número menor que 0 – cadeia str1 for 
alfabeticamente menor que str2;
� Número maior que 0 – cadeia str1 for 
alfabeticamente maior que str2.
11
Manipulando Cadeias de 
Caracteres
� strcpy (str1, str2) – Copia a cadeia str2 para 
a cadeia str1;
char stringDestino[] = "Prezado Sr. "; 
char stringOrigem[] = "Joao Pereira"; 
strcpy(stringDestino, stringOrigem); 
cout << "String Destino: " << stringDestino <<"\n"; 
cout << "String Origem: "<< stringOrigem;
A saída exibida na tela é:
String Destino: Joao Pereira
String Origem: Joao Pereira
12
Manipulando Cadeias de 
Caracteres
� gets – leitura de string do teclado, definida na 
biblioteca cstdio. Ela captura todos os caracteres 
digitados, inclusive os espaços em branco, até que 
seja pressionada a tecla Enter. 
� No Windows você deverá usar a 
função fflush(stdin) antes de chamar a gets() para 
limpar o buffer de entrada.
fflush(stdin); // limpa o buffer de entrada 
gets (nome_da_string);
Manipulando Cadeias de 
Caracteres - Exemplo
/*ProgC072.cpp - Programa que le uma string e imprima os caracteres separadamente 
na tela.*/
#include <cstring>
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
char nome[30];
cout << "Escreva seu nome completo:\n ";
fflush(stdin);
gets(nome);
int tamanho = strlen(nome);
for (int i =0; i < tamanho ; i++){
cout<<"\nCaracter n." << i+1 << ": " << nome[i]; }
return 0;}
Limpa o buffer
Recupera string do teclado
Recupera o Tamanho do string
Tratamento como um vetor
14
Manipulando Cadeias de 
Caracteres
� strlwr() – converte os caracteres da string em 
letras minúsculas
� strupr() - converte os caracteres da string em 
letras maiúsculas
Manipulando Cadeias de 
Caracteres - Exemplo
/*ProgCo73.cpp - Conversão de strings - maiúscula e minúscula*/
#include <iostream>
#include <string.h>
using namespace std;
int main(){
char palavra1[7] = "BrASiL";
cout << "String antes da conversao: " << palavra1 << endl;
strupr(palavra1);
cout << "\nString depois da conversao usando funcao strupr(): " << palavra1;
strlwr(palavra1);
cout << "\nString depois da conversao usando funcao strlwr(): " << palavra1;
return 0;
}
Conversão para maiúscula
Conversão para minúscula
16
Manipulando Cadeias de 
Caracteres - Exemplo
/* Prog074.cpp - Programa que apresenta a 
utilização de funções de manipulação de 
caracteres*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
char nome[ ] = {'P', 'r', 'o', 'g', 'r', 'a', 'm', 'a', 
'\0'};
char nome1[ ] = "Programa";
char nome2[100], nome3[100];
int tamanho;
cout << "Variavel nome: " << nome << "\n";
cout << "Variavel nome1: " <<nome1<<"\n";
strcpy(nome2, "Programa");
cout<<"Variavel nome2: "<<nome2<<"\n\n";
cout << "Digite o sobrenome: ";
gets(nome3);
cout<<"Sobrenome digitado:"<<nome3<<"\n";
cout << "Digite o primeiro nome: ";
cin >> nome2;
cout<<"Nome digitado: "<<nome2<<"\n\n";
if (strcmp(nome2, "Fabiana") == 0)
cout<<"Nome digitado foi Fabiana"<<"\n\n";
else
cout<<"Nome digitado nao foi Fabiana, foi:“ 
<<nome2<<"\n\n";
tamanho = strlen(nome3);
cout<<"Tamanho do Sobrenome e: “ 
<<tamanho<<"\n";
strcat (nome2, " ");
strcat (nome2, nome3);
cout<<"Nome Completo:"<<nome2<<"\n";
system ("PAUSE > 0");
return 0;
}
Bibliotecas. 
Declaração e Inicialização. 
Cópia 
Recupera do teclado com 
espaço
Recupera sem espaço
Comparação 
Tamanho
Concatenação
17
Manipulando Cadeias de 
Caracteres - Exemplo
/*ProgC075 - Programa que trabalha com strings*/
#include <iostream>
#include <iomanip>
#include <cstdlib>
using namespace std;
int main(){
char nome[30];
cout << "\nDigite o seu nome: ";
cin >> setw(30) >> nome;
cout << "\nSeu nome e: " << nome << "\n";
system("pause");
return 0;
}
Limita a quantidade 
de caracteres a serem 
recuperados.
18
Funçao getline
� O problema com o exemplo anterior é que o objeto cin
entende que um espaço em branco termina a entrada. 
� Neste caso, a função cin.getline() deve ser utilizada. A função 
cin.getline() aceita três argumentos um vetor de caracteres 
em que a linha de texto será armazenada, um comprimento e 
um caractere delimitador.
� Por exemplo, o segmento de programa:
char frase[80];
std::cin.getline(frase, 80, \n);
� declara o vetor frase de 80 caracteres e então lê uma linha de 
texto do teclado. A função interrompe a leitura dos caracteres 
quando é encontrado o caractere delimitador \n, quando o 
indicador de fim de arquivo é inserido pelo usuário ou quando 
o número de caracteres lidos até então é um a menos que o 
comprimento especificado no segundo argumento.
19
Exemplo cin.getline
/*ProgC076 - Programa que trabalha com strings*/
#include <iostream>
#include <cstdlib>
int main(){
char nome[30];
std::cout << "\nDigite o seu nome: ";
std::cin.getline(nome, 30, '\n');
std::cout << "\nSeu nome e: " << nome << "\n";
system("pause");
return 0;
}
Pega tudo digitado 
até encontrar o enterou até 30 caracteres.
Passando strings como 
parâmetros para funções
• Para passar uma string como 
parâmetro para uma função utilizamos 
o mesmo processo aprendido em 
vetores.
void imprimeString(char string[]) { 
int tamanho = strlen(string); 
for (int i = 0; i < tamanho ; i++) 
cout<<"\nCaracter n." << i+1 << ": " << string[i]; 
}
03/08/13
Passando strings como 
parâmetros para funções
//ProgC077 - Funções com string
#include <iostream>
#include <string.h>
#include <cstdio>
using namespace std;
void leString(char string[]);
void imprimeString(char string[]);
int contaLetra (char string[], char letra);
char ultimaLetra (char string[]);
int main(){
char palavra[60];
leString(palavra);
imprimeString(palavra);
cout<<"\nQuantidade de letras 'h': “ 
<<contaLetra(palavra, 'h');
cout<<"\nUltima letra digitada: “ 
<<ultimaLetra(palavra);
return 0;
}
void leString(char string[]){
cout << "Digite uma string->";
fflush(stdin);
gets(string);}
void imprimeString(char string[]){
int tamanho = strlen(string);
for (int i = 0; i < tamanho ; i++)
cout<<"\nCaracter n." << i + 1 << ": 
" << string[i];}
int contaLetra (char string[], char letra){
int contador = 0;
int tamanho = strlen(string);
for (int i = 0; i < tamanho ; i++) {
if (string[i] == letra)
contador++; }
return contador;}
char ultimaLetra (char string[]){
return string[strlen(string)-1];}
Protótipos
Chamadas das 
funções
Limpa buffer e pega 
string do teclado
Tamanho 
da string
Tratamento 
como vetor
22
Exercícios
� Fazer um programa que leia uma 
frase, calcule e mostre a quantidade 
de letras da frase digitada.
� Fazer um programa que leia uma 
frase, calcule e mostre a quantidade 
de palavras da frase digitada.

Outros materiais