Leitura de números de telefone usando um operador de extração de stream sobrecarregado. Na Figura 19.5, os operadores de extração e inserção de stream foram sobrecarregados para a entrada e saída de objetos da classe PhoneNumber. Reescreva o operador de extração de stream para realizar a seguinte verificação de erro na entrada. A função operator>> precisará ser reimplementada.
a) Inclua o número de telefone inteiro em um array. Verifique se o número apropriado de caracteres foi inserido. Deve haver um total de 15 caracteres lidos para um número de telefone no formato (11) 5555-1212. Use a função-membro clear de ios_ base para definir o failbit de entrada imprópria.
b) O código de área e a central não começam nem com 0 nem com 1. Teste o primeiro dígito das partes do código de área e troque partes do número de telefone para ter certeza de que nenhum comece com 0 ou com 1. Use a função-membro clear de ios_ base para definir failbit de entrada imprópria.
c) O dígito do meio de um código de área costumava ser limitado a 0 ou a 1 (embora isso tenha mudado recentemente). Teste o dígito do meio para ver se é um valor 0 ou 1. Use a função-membro clear de ios_base para definir failbit de entrada imprópria. Se nenhuma das operações acima resultar na definição de failbit no caso de uma entrada imprópria, copie as três partes do número de telefone nos membros areaCode, exchange e line do objeto PhoneNumber. Se failbit tiver sido definido na entrada, faça o programa imprimir uma mensagem de erro e termine em vez de imprimir o número do telefone.
Passo 1
Beleza pessoal, espero que estejam todos ligados para resolvermos juntos mais uma atividade aqui no site. Essa atividade é extremamente prática, sendo assim é muito aconselhável que abram seu compilador e se mantenham atentos.
Para reescrever a classe PhoneNumber definida pelo usuário, primeiro modificaremos seu arquivo de cabeçalho PhoneNumber.h. Este contém a mesma declaração da Fig. 19.3, mas declararemos outro membro de dados privado. Assim, teremos
Em seguida, reescreveremos a função do operador de sobrecarga de extração e inserção de fluxo no arquivo de origem PhoneNumber.cpp com base nos requisitos fornecidos em (a-c).
Vamos primeiro declarar os arquivos de cabeçalho e o namespace padrão
Passo 2
Então, vamos reescrever a função de inserção de fluxo que determina se há uma entrada imprópria
Passo 3
Agora, reescreva a função de extração de fluxo para verificar a validade da entrada.
Por fim, usaremos a função main no arquivo fonte main.cpp para testar a classe PhoneNumber
Finalmente, depois de muito esforço o nosso código irá produzir os seguintes resultados.
É isso pessoal, essa questão é bem prática e requer bastante atenção e conhecimento sobre a linguagem. Espero que tenham entendido o que foi feito e um abraço a todos.
Resposta
Ei, a resposta está no passo a passo :)