No tienes porqué utilizar stringstream para nada. Al final te dejo un ejemplo.
La principal ventaja que tiene el código de eferion es que extremadamente legible, cualquier persona con un poco de idea de inglés y el lenguaje es capaz de comprender al instante lo que su código hace.
Cómo usarlo:
Código C++:
Ver originalint main()
{
int valor;
switch(ToInt(cin ,valor)){
case NoError:
cout<<"El valor es: "<<valor<<endl;
break;
case Overflow:
cout<<"Hubo overflow"<<endl;
break;
case WrongFormat:
cout<<"Formato incorrecto"<<endl;
break;
}
}