Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H....
Transcript of Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H....
![Page 1: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/1.jpg)
Pearson Education Slide 1
![Page 2: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/2.jpg)
Pearson Education Slide 2
Capítulo 9
Criado por Frederick H. Colclough, Colorado Technical University
Strings
![Page 3: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/3.jpg)
Pearson Education Slide 3
Objetivos do Estudo Um Tipo Vetor para Strings
Strings C Ferramentas de Manipulação de
Caracteres E/S de caracteres Funções-membros get E put Funções-membro putback, peek E ignore
Classe-Padrão string Processamento de Strings
![Page 4: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/4.jpg)
Pearson Education Slide 4
Introdução Dois tipos string: Strings C
Vetor com tipo-base char Final da string é marcado com nulo, ‘\0’ ‘Antigo’ método herdado do C
Classe String Utiliza Modelos (Templates)
![Page 5: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/5.jpg)
Pearson Education Slide 5
Strings C Vetor com tipo-base char
Um caractere por variável indexada Um caracter extra: ‘\0’
Chamado ‘caractere nulo’ Marcador de final
Nós usamos strings C A literal “Olá” armazenada como string C
![Page 6: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/6.jpg)
Pearson Education Slide 6
Variável String C Vetor de caracteres:
char s[10]; Declara uma variável string C para guardar até
9caracteres
+ um caracter nulo Vetor ‘parcialmente preechido’
Grande o bastante para guardar o tamanho máximo da string
Indicar o final com o caractere nulo A única diferença de um vetor padrão:
Deve conter o caracter nulo
![Page 7: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/7.jpg)
Pearson Education Slide 7
Armazenamento String C Um vetor com tipo-
base char:char s[10];
Se s contém a string “Oi, mamãe!”, ela é armazenada
como:Painel página 242
![Page 8: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/8.jpg)
Pearson Education Slide 8
Inicialização de uma String C Pode-se inicializar uma string C:
char minhaMensagem[20] = “Oi você aí.”; Não é necessário preencher o vetor inteiro Inicialização coloca ‘\0’ no final
Pode-se omitir o tamanho do vetor:char stringCurta[] = “abc”;
A variável string C receberá o tamanho do
comprimento da string C mais um. NÃO como:
char stringCurta[] = {‘a’, ‘b’, ‘c’};
![Page 9: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/9.jpg)
Pearson Education Slide 9
Índices de uma String C Uma string C é um vetor Pode-se acessar variáveis indexadas de:
char nossaString[5] = “Oi”; nossaString[0] é ‘O’ nossaString[1] é ‘i’ nossaString[2] é ‘\0’ nossaString[3] é desconhecido nossaString[4] é desconhecido
![Page 10: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/10.jpg)
Pearson Education Slide 10
Manipulação de Índices de uma String C
Pode-se manipular as variáveis indexadaschar felizString[7] = "LaRaRa";
felizString[6] = ’Z’; Cuidado!
Aqui, ‘\0’ (nulo) foi sobrescrito por um ‘Z’! Se nulo foi sobrescrito, string C não ‘age’
mais como uma string C! Resultados Imprevisíveis!
![Page 11: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/11.jpg)
Pearson Education Slide 11
Biblioteca Declarando strings C
Não requer nenhuma biblioteca C++ Predefinição de C++
Manipulações Requerem a Biblioteca <cstring> Incluída quando estiver usando strings C
Geralmente necessária para a ‘diversão’ com elas
![Page 12: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/12.jpg)
Pearson Education Slide 12
= e == com strings C strings C não são como outra variáveis
Não se pode atribuir ou comparar:char umaString[10];umaString = “Olá”; // ILEGAL!
Pode-se somente usar ‘= ’ na declaração de uma string C! Deve-se usar uma função da biblioteca para atribuições:
strcpy(umaString, “Olá”); Função predefinida (em <cstring>) Torna o valor de umaString igual a “Olá” Nenhum controle de tamanho!
O programador deve controlar, exatamente como em outros vetores!
![Page 13: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/13.jpg)
Pearson Education Slide 13
Comparando strings C Também não se pode usar o operador
==char umaString[10] = “Olá”;char outraString[10] = “Até logo”;
umaString == outraString; // NÃO permitido!
Deve-se usar uma função da biblioteca
novamente:if (strcmp(umaString, outraString))
cout << “As strings não são iguais.”;else
cout << “As strings são iguais.”;
![Page 14: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/14.jpg)
Pearson Education Slide 14
A Biblioteca <cstring> Cheia de funções de
manipulação de stings
Painel 9.1 página 245
![Page 15: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/15.jpg)
Pearson Education Slide 15
A Biblioteca <cstring> (cont) Cheia de funções de
manipulação de stings
Painel 9.1 página 246
![Page 16: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/16.jpg)
Pearson Education Slide 16
Funções String C: strlen() Freqüentemente usado para saber o
comprimento da string:char minhaString[10] = “LaRaRa”;cout << strlen(minhaString);
Retorna o número de caracteres Não incluindo o caractere nulo
Resultado:6
![Page 17: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/17.jpg)
Pearson Education Slide 17
Funções String C : strcat() strcat() ‘Concatenação de String’:
char varString[20] = "O rato";
strcat(varString, "roeu"); Observe o resultado:
varString agora contém “O ratoroeu” Cuidado! Incorpore os espaços quando necessário!
![Page 18: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/18.jpg)
Pearson Education Slide 18
Argumentos e Parâmetros de string C Lembre-se: string C é um vetor Então um parâmetro string C é um parâmetro de vetor
strings C passadas para funções podem sermodificadas pelas funções que recebem!
Como todos os vetores, incluir o tamanho também Uma função ‘poderia’ usar também ‘\0’ para encontrar o final
Assim o tamanho não é necessário se a função
não for modificar o parâmetro Use o modificador ‘const’ para proteger a string C
![Page 19: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/19.jpg)
Pearson Education Slide 19
Saída de String C Strings C podem ser enviadas para a
saída com o operador de inserção, <<. Como nós já temos feito:
cout << notícia << “ UAU.\n”; Onde notícia é uma variável string C
Possível porque o operador << ésobrecarregado para strings C!
![Page 20: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/20.jpg)
Pearson Education Slide 20
Entrada para String C É possível preencher uma variável
string C por meio do operador de entrada >>
Isto é possível, porém Espaço em branco é ‘delimitador’
Tabulação, espaço e quebra de linha são ‘omitidos’ A leitura ‘pára’ no próximo delimitador
Esteja alerta para o tamanho da string C Deve ser grande o bastante para armazenar a string
inteira! C++ não emite nenhum aviso!
![Page 21: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/21.jpg)
Pearson Education Slide 21
Exemplo de Entrada para String C char a[80], b[80];
cout << “Digite alguma coisa:\n”;cin >> a >> b;cout << a << b << “FIM DA ENTRADA\n”;
Diálogo apresentado:Digite alguma coisa : La ra ra para você!LaraFIM DA ENTRADA
Note: A parte sublinhada foi digitada String C a recebe: “La” String C b recebe: “ra”
![Page 22: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/22.jpg)
Pearson Education Slide 22
Entrada de Linha para a String C Pode-se receber uma linha inteira dentro da string C
Use a função-membro predefinida getline():
char a[80];cout << “Digite alguma coisa:\n”;cin.getline(a, 80);cout << a << “FIM DA ENTRADA\n”;
Diálogo:Digite alguma coisa: La ra ra para você! La ra ra para você!FIM DA ENTRADA
![Page 23: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/23.jpg)
Pearson Education Slide 23
Mais Sobre getline() Pode-se explicitamente informar o tamanho que será
recebido:
char stringCurta[5];cout << “Digite alguma coisa:\n”;cin.getline(stringCurta, 5);cout << stringCurta << “FIM DA ENTRADA\n”;
Resulta em:Digite alguma coisa : larararamlaraFIM DA ENTRADA
Força a leitura de somente QUATRO caracteres
É necessário lembrar do caracter nulo
![Page 24: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/24.jpg)
Pearson Education Slide 24
E/S de Caracteres Entrada e Saída de dados
Todos tratados como caracteres ex.: número 10 apresentado como ‘1’ e ‘0’ Conversão feita automaticamente
Utiliza recursos de baixo-nível
Podemos também usar os mesmos
recursos de baixo-nível para nós
![Page 25: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/25.jpg)
Pearson Education Slide 25
Função-membro get() Lê um caractere de cada vez Função-membro do objeto cin:
char proximoSimbolo;cin.get(proximoSimbolo);
Lê o próximo caractere e coloca-o na variávelproximoSimbolo
O argumento deve ser um tipo char Não uma ‘string’!
![Page 26: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/26.jpg)
Pearson Education Slide 26
Função-membro put() Apresenta um caracter de cada vez Função-membro do objeto cout: Exemplos:
cout.put(‘a’); Apresentará como saída na tela a letra ‘a’:
char minhaString[10] = “Olá”;cout.put(minhaString[1]);
Apresentará como saída na tela a letra ’l’:
![Page 27: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/27.jpg)
Pearson Education Slide 27
Mais Sobre Funções-membros putback()
Lê uma vez, pode ser necessário ‘devolvê-lo’ cin.putback(ultimoCaractere);
peek() Retorna o próximo caractere, mas deixa-o lá peekChar = cin.peek();
ignore() Ignora a entrada, até o caractere designado cin.ignore(1000, ‘\n’);
Salta no máximo 1000 caracteres até ‘\n’
![Page 28: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/28.jpg)
Pearson Education Slide 28
Funções de Manipulação de Caracteres
Painel 9.3 página 255
![Page 29: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/29.jpg)
Pearson Education Slide 29
Funções de Manipulação de Caracteres (cont)
Painel 9.3
página 256
![Page 30: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/30.jpg)
Pearson Education Slide 30
Classe-Padrão string Definida na Biblioteca:
#include <string>using namespace std;
Variáveis String e Expressões Tratadas como tipos simples
Pode-se atribuir, comparar, adicionar:string s1, s2, s3;s3 = s1 + s2; //Concatenaçãos3 = “Olá mamãe!” //Atribuição
Note que a string C “Olá mamãe!” foi automaticamenteconvertida para o tipo string!
![Page 31: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/31.jpg)
Pearson Education Slide 31
Programa Usando a Classe StringPainel 9.4 página 259
![Page 32: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/32.jpg)
Pearson Education Slide 32
E/S com a Classe string Exatamente como em outros tipos! string s1, s2;
cin >> s1;cin >> s2;
Resulta:Se o usuário digitar:Que os pêlos dos seus dedos do pé fiquem longos e encaracolados!
A extração ainda ignora os espaços em branco:s1 recebe o valor “Que”s2 recebe o valor “os”
![Page 33: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/33.jpg)
Pearson Education Slide 33
getline() com a Classe string
Para linhas completas:string linha;
cout << "Digite uma linha de entrada:\n";
getline(cin, linha);
cout << linha << "FIM DA ENTRADA\n";
Diálogo produzido:Digite alguma coisa:
La ra ra para você!
La ra ra para você!FIM DA ENTRADA Semelhante ao uso de getline() com strings
C
![Page 34: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/34.jpg)
Pearson Education Slide 34
Outras Versões de getline()
Pode-se especificar o caracter ‘delimitador’:string linha;
cout << "Digite alguma coisa:\n";
getline(cin, linha, ’?’); Recebe a entrada até que ‘?’ seja
encontrado getline() retorna uma referência
string s1, s2;getline(cin, s1) >> s2;
Resulta em: (cin) >> s2;
![Page 35: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/35.jpg)
Pearson Education Slide 35
Armadilha: Misturando Métodos de Entrada
Cuidado ao misturar cin >> variável and getline int n;
string linha;cin >> n;getline(cin, linha);
Se a entrada for: 42 Olá mochileiro.
A variável n recebe realmente 42 linha é fixado como igual à string vazia!
cin >> n ignorou os espaços em branco, deixando‘\n’ para a próxima entrada para getline()!
![Page 36: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/36.jpg)
Pearson Education Slide 36
Processamento de Strings com a Classe string
Mesmas operações disponíveis para Strings C
E mais! Há mais de 100 membros e outras funções
associadas
Algumas funções-membros: .length()
Retorna o comprimento de uma string variável .at(i)
Retorna uma referência ao caracter na posição i
![Page 37: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/37.jpg)
Pearson Education Slide 37
Funções-membros da classe-padrão string
Página 9.7página 265
![Page 38: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/38.jpg)
Pearson Education Slide 38
Funções-membros da classe-padrão string (cont)
Página 9.7 página 266
![Page 39: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/39.jpg)
Pearson Education Slide 39
Conversão entre Objetos String e Strings C
Conversões automáticas de tiposde string C para objeto string:
char umaStringC[ ] = "Esta é a minha string C.";string variavelString;variavelString = umaStringC;
Perfeitamente legal e apropriada! umaStringC = variavelString;
ILEGAL! Não pode converter automaticamente para string
C Deve usar conversão explícita:
strcpy(umaStringC, variavelString.c_str( ));
![Page 40: Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.](https://reader034.fdocument.pub/reader034/viewer/2022051820/552fc0f8497959413d8b4f21/html5/thumbnails/40.jpg)
Pearson Education Slide 40
Sumário Variável string C é um ‘vetor de caracteres’
Com a adição de um caracter nulo, ‘\0’ Strings C agem como vetores
Não podem ser atribuídos nem comparados como variáveis simples
Biblioteca <cctype> e <string> têm funções muito úteis para manipular strings
cin.get() lê o próximo caracter simples Versões de getline() permitem a leitura da linha inteira Objects Classe string comportam-se melhor que
strings C