Test Foro de elhacker.net SMF 2.1

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