вы находитесь в C ++, просто используйте std :: istringstream :
std::string s("1 2");
std::istringstream ss(s);
int t, b;
if (ss >> t >> b)
std::cout << t << '/' << b << std::endl;
else
std::cerr << "invalid form " << s << std::endl;
иначе, если хотите, вы можете использовать C sscanf на string::c_str()
std::string s("1 2");
int t, b;
if (sscanf(s.c_str(), "%d %d", &t, &b) == 2)
std::cout << t << '/' << b << std::endl;
else
std::cerr << "invalid form " << s << std::endl;
Бесполезно усложнять вашу жизнь, что позволяет управлять делом дополнительными пробелами / табуляцией.
Но я призываю вас всегда проверять, есть ли у вас результат, а не предполагать / надеяться, что вы его получили