A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings.

Apresentações semelhantes


Apresentação em tema: "Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings."— Transcrição da apresentação:

1 Pearson Education Slide 1

2 Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings

3 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

4 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)

5 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

6 Pearson Education Slide 6 Variável String C Vetor de caracteres: char s[10]; Declara uma variável string C para guardar até 9 caracteres + 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

7 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

8 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};

9 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

10 Pearson Education Slide 10 Manipulação de Índices de uma String C Pode-se manipular as variáveis indexadas char 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!

11 Pearson Education Slide 11 Biblioteca Declarando strings C Não requer nenhuma biblioteca C++ Predefinição de C++ Manipulações Requerem a Biblioteca Incluída quando estiver usando strings C Geralmente necessária para a diversão com elas

12 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 ) Torna o valor de umaString igual a Olá Nenhum controle de tamanho! O programador deve controlar, exatamente como em outros vetores!

13 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.;

14 Pearson Education Slide 14 A Biblioteca Cheia de funções de manipulação de stings Painel 9.1 página 245

15 Pearson Education Slide 15 A Biblioteca (cont) Cheia de funções de manipulação de stings Painel 9.1 página 246

16 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

17 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!

18 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 ser modificadas 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

19 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!

20 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!

21 Pearson Education Slide 21 Exemplo de Entrada para String C char a[80], b[80]; cout > 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

22 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

23 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 : larararam laraFIM DA ENTRADA Força a leitura de somente QUATRO caracteres É necessário lembrar do caracter nulo

24 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

25 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ável proximoSimbolo O argumento deve ser um tipo char Não uma string!

26 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:

27 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

28 Pearson Education Slide 28 Funções de Manipulação de Caracteres Painel 9.3 página 255

29 Pearson Education Slide 29 Funções de Manipulação de Caracteres (cont) Painel 9.3 página 256

30 Pearson Education Slide 30 Classe-Padrão string Definida na Biblioteca: #include 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ção s3 = Olá mamãe!//Atribuição Note que a string C Olá mamãe! foi automaticamente convertida para o tipo string!

31 Pearson Education Slide 31 Programa Usando a Classe String Painel 9.4 página 259

32 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

33 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

34 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;

35 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()!

36 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

37 Pearson Education Slide 37 Funções-membros da classe-padrão string Página 9.7 página 265

38 Pearson Education Slide 38 Funções-membros da classe-padrão string (cont) Página 9.7 página 266

39 Pearson Education Slide 39 Conversão entre Objetos String e Strings C Conversões automáticas de tipos de 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( ));

40 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 e 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


Carregar ppt "Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 9 Criado por Frederick H. Colclough, Colorado Technical University Strings."

Apresentações semelhantes


Anúncios Google