Ir ao conteúdo

Posts recomendados

Postado

Olá, estou criando uma função que irá cadastrar clientes. Quando o usuário insere caracteres que não são esperados pela variável na qual o cin vai escrever, o programa entra em loop.

A minha dúvida é como usar o getline, string e stringstream para fazer essa verificação de dados inseridos.Se o getline só aceita strings no último parâmetro, terei de usar uma string intermediária para colher os dados e verificar seu tipo usando o stringstream? Pesquisei muito na net, mas, sinceramente, não conseguir aplicar no meu código.

cin.ignore();
cout<<"Nome: ";
getline(cin, clientesalvar.nome); //clientesalvar.nome é do tipo string
cout<<"CPF: "; //
getline(cin, clientesalvar.cpf); //clientesalvar.cpf é do tipo inteiro

 

Postado

Faça o tratamento da entrada utilizando somente a LEITURA DE STRING, mesmo que seja para ler números. Depois de efetuar a leitura você verifica se os caracteres inseridos são válidos. Existem algumas maneiras de se fazer isso, a mais arcaica é percorrer a string e verificar cada um de seus caracteres.

No geral o programador pede pra repetir a entrada no caso de encontrar um caractere que não seja válido. Passando isso, o passo final é converter a string para o tipo correto. Seja int, float etc...

É bem trabalhoso, mas é uma maneira bem segura de ler uma entrada.
 

Postado

deixe-me ver se entendi o procedimento. Depois de o dado está armazenado na string, eu passo desta para um stringstream e tento extrair dessa última para um inteiro(se for um cpf, por exemplo), caso extraia tudo corretamente, significa que o dado era realmente um inteiro, porém, caso retorne zero/false durante a extração(stringstream >> inteiro) significa que há um caractere que não é inteiro? Logo repito o requisição do dado?

Postado

Tem um problema aí, CPF não é pra ser inteiro. Só se usa INT em variável que vai ser introduzida em um calculo  matemático. CPF, RG e números de documentos se utiliza string pra armazenar.

Sobre o stringstream, Você pode ignorar este passo e apenas percorrer a "string em si", sempre verificando se tem caracteres inválidos.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!