08. STRINGS
22 pág.

08. STRINGS


DisciplinaProgramacao Modular91 materiais1.043 seguidores
Pré-visualização2 páginas
Strings - Funções de 
Tratamento de Caractere
String
\u2022 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
\ufffd Pode-se definir um vetor de tipo char, 
onde cada posição representa um 
caractere.
\ufffd O fim da cadeia é identificado com o 
caractere nulo, por meio do \u2018\0\u2019.
\ufffd Este tipo de vetor possui o nome de string.
4
Declaração de String
\ufffd char nome[7];
\ufffd char nome[ ] = {'U', 'N', 'I', 'F', 'E', 'I', '\0'};
\ufffd char nome[ ] = "UNIFEI"; 
\ufffd char nome[7] = "UNIFEI";
5
Declaração de String
\ufffd É preciso declarar vetores de caracteres como 
sendo um caracter mais longo que a maior 
string que eles devem guardar (devido ao 
caracter nulo).
\ufffd 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
\ufffd strlen (str1) \u2013 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<<&quot;\nCaracter n.&quot;<<i+1<<&quot;:&quot;<<nome[i];
}
7
Manipulando Cadeias de 
Caracteres
\ufffd strcat (str1, str2) \u2013 concatena a cadeia 
identificada por str2 à cadeia str1. A 
segunda permanece inalterada.
char stringDestino[40] = &quot;Prezado Sr. &quot;; 
char stringOrigem[] = &quot;Joao Pereira&quot;; 
strcat(stringDestino, stringOrigem); 
cout << &quot;String Destino: &quot; << stringDestino <<&quot;\n&quot;; 
cout << &quot;String Origem: &quot;<< stringOrigem;
A saída da tela será: 
String Destino: Prezado Sr. Joao Pereira
String Origem: Joao Pereira
8
Manipulando Cadeias de 
Caracteres
\ufffd strcmp (str1, str2) \u2013 compara duas cadeias 
de caracteres e retorna um número inteiro, 
que pode ser (maiúscula e minúscula são 
diferentes):
\ufffd Zero \u2013 se as duas cadeias são iguais;
\ufffd Número menor que 0 \u2013 cadeia str1 for 
alfabeticamente menor que str2;
\ufffd Número maior que 0 \u2013 cadeia str1 for 
alfabeticamente maior que str2.
9
Manipulando Cadeias de 
Caracteres
char cor[] = &quot;azul&quot;; 
char resposta[10]; 
cout << &quot;Qual e a cor do ceu? \n&quot;; 
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
\ufffd stricmp (str1, str2) \u2013 compara duas cadeias 
de caracteres e retorna um número inteiro 
que pode ser (maiúscula e minúscula são 
iguais):
\ufffd Zero \u2013 se as duas cadeias são iguais;
\ufffd Número menor que 0 \u2013 cadeia str1 for 
alfabeticamente menor que str2;
\ufffd Número maior que 0 \u2013 cadeia str1 for 
alfabeticamente maior que str2.
11
Manipulando Cadeias de 
Caracteres
\ufffd strcpy (str1, str2) \u2013 Copia a cadeia str2 para 
a cadeia str1;
char stringDestino[] = &quot;Prezado Sr. &quot;; 
char stringOrigem[] = &quot;Joao Pereira&quot;; 
strcpy(stringDestino, stringOrigem); 
cout << &quot;String Destino: &quot; << stringDestino <<&quot;\n&quot;; 
cout << &quot;String Origem: &quot;<< stringOrigem;
A saída exibida na tela é:
String Destino: Joao Pereira
String Origem: Joao Pereira
12
Manipulando Cadeias de 
Caracteres
\ufffd gets \u2013 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. 
\ufffd 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 << &quot;Escreva seu nome completo:\n &quot;;
fflush(stdin);
gets(nome);
int tamanho = strlen(nome);
for (int i =0; i < tamanho ; i++){
cout<<&quot;\nCaracter n.&quot; << i+1 << &quot;: &quot; << 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
\ufffd strlwr() \u2013 converte os caracteres da string em 
letras minúsculas
\ufffd 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] = &quot;BrASiL&quot;;
cout << &quot;String antes da conversao: &quot; << palavra1 << endl;
strupr(palavra1);
cout << &quot;\nString depois da conversao usando funcao strupr(): &quot; << palavra1;
strlwr(palavra1);
cout << &quot;\nString depois da conversao usando funcao strlwr(): &quot; << 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[ ] = &quot;Programa&quot;;
char nome2[100], nome3[100];
int tamanho;
cout << &quot;Variavel nome: &quot; << nome << &quot;\n&quot;;
cout << &quot;Variavel nome1: &quot; <<nome1<<&quot;\n&quot;;
strcpy(nome2, &quot;Programa&quot;);
cout<<&quot;Variavel nome2: &quot;<<nome2<<&quot;\n\n&quot;;
cout << &quot;Digite o sobrenome: &quot;;
gets(nome3);
cout<<&quot;Sobrenome digitado:&quot;<<nome3<<&quot;\n&quot;;
cout << &quot;Digite o primeiro nome: &quot;;
cin >> nome2;
cout<<&quot;Nome digitado: &quot;<<nome2<<&quot;\n\n&quot;;
if (strcmp(nome2, &quot;Fabiana&quot;) == 0)
cout<<&quot;Nome digitado foi Fabiana&quot;<<&quot;\n\n&quot;;
else
cout<<&quot;Nome digitado nao foi Fabiana, foi:\u201c 
<<nome2<<&quot;\n\n&quot;;
tamanho = strlen(nome3);
cout<<&quot;Tamanho do Sobrenome e: \u201c 
<<tamanho<<&quot;\n&quot;;
strcat (nome2, &quot; &quot;);
strcat (nome2, nome3);
cout<<&quot;Nome Completo:&quot;<<nome2<<&quot;\n&quot;;
system (&quot;PAUSE > 0&quot;);
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 << &quot;\nDigite o seu nome: &quot;;
cin >> setw(30) >> nome;
cout << &quot;\nSeu nome e: &quot; << nome << &quot;\n&quot;;
system(&quot;pause&quot;);
return 0;
}
Limita a quantidade 
de caracteres a serem 
recuperados.
18
Funçao getline
\ufffd O problema com o exemplo anterior é que o objeto cin
entende que um espaço em branco termina a entrada. 
\ufffd 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.
\ufffd Por exemplo, o segmento de programa:
char frase[80];
std::cin.getline(frase, 80, \n);
\ufffd 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 << &quot;\nDigite o seu nome: &quot;;
std::cin.getline(nome, 30, '\n');
std::cout << &quot;\nSeu nome e: &quot; << nome << &quot;\n&quot;;
system(&quot;pause&quot;);
return 0;
}
Pega tudo digitado 
até encontrar o enter