Aquí te dejo un ejemplo que he hecho, funciona solo con números de una cifra:
#include <iostream>
using namespace std;
int main()
{
char _numero = NULL;
cout << "Introduce un numero: ";
cin >> _numero;
int numero = (int)(_numero-0x30);
if (numero < 0x0 || numero > 0x9)
{
cout << endl <<"Error, el digito intrucido no es un numero" << endl;
return 1;
}
cout << "El numero introducido es: " << numero << endl;
return 0;
}
Gracias, pero necesitamos que funcione con números de más cifras.
Un ejemplo sencillo:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
cout << "Introduce un numero: ";
int num;
if (cin >> num)
cout << "OK" << endl;
else
cout << "Entrada no valida" << endl;
return 0;
}
Pero le falta verificar si el resto de la linea solo es espacio blanco (para evitar que entradas como "123JKL" se tomen como validas).
Un saludo
Ese módulo funciona a la perfección, pero cuando tratamos de llevarlo a nuestro código no funciona correctamente, aquí te dejo el módulo en cuestión:
void editSong(Collection &collection){
int buscado, encontrado, eleccion, cont=0, numero;
for(unsigned int i=0;i<collection.songs.size();i++){
printSong(collection.songs[i]);
}
cout<<"Select song:"<<endl;
if(cin>>buscado){ //si es un numero tiene que hacer todo esto
encontrado=findIdSong(collection, buscado);
if(encontrado==-1){
cout<<"Error: Unknown song "<<buscado<<endl;
}
else{
do{
cout<<"Edit (1-Title, 2-Artist, 3-Album, 4-Genre, 5-Url):"<<endl;
cin>>eleccion;
cin.get();
switch(eleccion){
case 1:
cout<<"Title: ";
getline(cin, collection.songs[buscado-1].title);
break;
case 2:
cout<<"Artist: ";
getline(cin, collection.songs[buscado-1].artist);
break;
case 3:
cout<<"Album: ";
getline(cin, collection.songs[buscado-1].album);
break;
case 4:
cout<<"Genre: ";
getline(cin, collection.songs[buscado-1].genre);
break;
case 5:
cout<<"Url: ";
getline(cin, collection.songs[buscado-1].url);
break;
default: cout<<"Error: Unknow option"<<endl;
}
}while(eleccion!=1 && eleccion!=2 && eleccion!=3 && eleccion!=4 && eleccion!=5);
}
}
else{ //si no es un numero mostrar este mensaje de error y vovler a mostrar el menu (otro módulo)
cout<<"No results"<<endl;
}
}
Si quieres que te enseñe el código entero dímelo, pero es bastante mas largo.