Вы можете использовать boost lexical-cast , который предназначен именно для этой цели. Будет сгенерировано исключение, конверсия не удалась. Boost хорошо протестирован, и вы можете использовать его, чтобы сделать преобразование для вас.
Это может выглядеть так:
#include <boost/lexical_cast.hpp>
#include <iostream>
int cube(int x)
{
return x*x*x;
}
int main()
{
std::string x;
std::cout << " Enter an integrer : ";
std::cin >> x;
try
{
int y = boost::lexical_cast<int>(x);
int cube_x = cube(y);
std::cout << "Cube(" << x << ")=" << cube_x << std::endl;
}
catch (const boost::bad_lexical_cast &e)
{
std::cerr << e.what() << '\n';
}
return 0;
}
Кстати, если ваша программа должна обрабатывать только целые числа, вы должны также использовать тип int
, а не float
для обработки чисел.