no se como hacer para que si un int te retorne char te devuelva un error en vez de un buffer overflow
Tienes que explicarte de una forma clara y precisa porque, honestamente, es difícil entender el problema.
Supongo la pregunta es: Si en un programa espero obtener un entero y en su lugar el usuario teclea una cadena no valida como "JKL", ¿Como puede detectarlo y continuar con la ejecución del programa?
Si es eso puedes primero leer una linea mediante la función "getline" y a continuación verificar si de esta se puede obtener el numero mediante un objeto de la clase "stringstream".
Un ejemplo:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <sstream>
using std::stringstream;
int main()
{
bool ok;
do {
cout << "Introduce un numero:" << endl;
string linea;
getline (cin, linea);
stringstream aux;
aux << linea;
int numero;
if (aux >> numero) {
cout << "El numero es " << numero << endl;
ok = true;
} else
ok = false;
} while (!ok);
return 0;
}
Editado: la explicacion estaba mal (muy mal). La cambie por una, espero, mejor.
Un saludo