Filtro para no introducir un char en vector int.

Iniciado por antkk, 14 Marzo 2015, 13:15 PM

0 Miembros y 1 Visitante están viendo este tema.

antkk

Hola, estoy aprendiendo a programar en c++ y tengo una duda con esto:

void Leer(int vector[]){

   for(int i=0; i < TAMANIO; ++i){
      cout << "Introduce números v[" << i << "]: ";
      cin >> vector;
   }

}

He escrito esta función y mi duda es como resuelvo que el usuario al introducir un char desde el teclado y no se lo trague el vector??

TAMANIO está declarada como una constante global y su tamaño es 100.

Un saludo

ivancea96

Primero lee la linea como una string. Luego, miras si es numérica. En caso de que lo sea, usas una función como "stoi()" para transformarlo a int, y ya lo metes en el vector.

rir3760

Cita de: antkk en 14 Marzo 2015, 13:15 PMcomo resuelvo que el usuario al introducir un char desde el teclado y no se lo trague el vector?
Una opción ya la indico ivancea96, otra consiste en verificar el resultado del operador >> directamente, un ejemplo:
Código (cpp) [Seleccionar]
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <limits>
using std::numeric_limits;

int main()
{
   int numero;
   
   while (true) {
      cout << "Introduce un numero: ";
      if (cin >> numero)
         break;
      else {
         cin.clear();
         cin.ignore(numeric_limits<int>::max(), '\n');
      }
   }
   
   cout << "El numero es " << numero << endl;
   
   return 0;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language