Creo que presuponer que si cin no es uno tiene que ser menos uno, no sé yo.
De todas formas tal como te apuntaba rir3760 el método tiene entre otros el inconveniente que si se introduce una cadena como 12as el cin toma el 12 como número.
Creo más seguro declarar otra variable buscado_char como char y comprobar en una función, más que nada para que sea más modular el código, que todos sus caracteres son numéricos. Esto se puede hacer con la función isdigit o a pelo:
Código (cpp) [Seleccionar]
/********** FUNCION COMPRUEBA ENTERO *************/
int comprobar_cadena_como_numero (char cadena[100]){
for (int i=0;cadena[i];i++){
if (cadena[i]<'0' || cadena[i]>'9'){
return 1;
}
}
return 2;
}
/********************************************************/
....................
cout<<"Select song:"<<endl;
char buscado_char[100];
cin>>buscado_char;
if (comprobar_cadena_como_numero(buscado_char)==2){
buscado=atoi(buscado_char);//si es un numero entero tiene que hacer todo esto
encontrado=findIdSong(collection, buscado);
}
else
cout<<"Error: Unknown song "<<buscado<<endl;
........................................
¡¡¡¡ Saluditos! ..... !!!!