Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: antkk en 14 Marzo 2015, 13:15 pm



Título: Filtro para no introducir un char en vector int.
Publicado por: antkk en 14 Marzo 2015, 13:15 pm
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


Título: Re: Filtro para no introducir un char en vector int.
Publicado por: ivancea96 en 14 Marzo 2015, 15:07 pm
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.


Título: Re: Filtro para no introducir un char en vector int.
Publicado por: rir3760 en 14 Marzo 2015, 17:43 pm
como 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
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5.  
  6. #include <limits>
  7. using std::numeric_limits;
  8.  
  9. int main()
  10. {
  11.   int numero;
  12.  
  13.   while (true) {
  14.      cout << "Introduce un numero: ";
  15.      if (cin >> numero)
  16.         break;
  17.      else {
  18.         cin.clear();
  19.         cin.ignore(numeric_limits<int>::max(), '\n');
  20.      }
  21.   }
  22.  
  23.   cout << "El numero es " << numero << endl;
  24.  
  25.   return 0;
  26. }

Un saludo