Для большинства рабочих мест стандартные потоки отлично справляются с работой,
std::string data = "AraK 22 4.0";
std::stringstream convertor(data);
std::string name;
int age;
double gpa;
convertor >> name >> age >> gpa;
if(convertor.fail() == true)
{
// if the data string is not well-formatted do what ever you want here
}
Если вам нужны более мощные инструменты для более сложного синтаксического анализа, вы можете рассмотреть регулярное выражение или даже Spirit из Boost.