Пока символ является пробелом (проверьте функцию isspace
), пропустите его.
Если текущий символ представляет собой цифру, то в то время как текущий символ представляет собой цифру, поместите его во временную строку. Когда символ больше не является цифрой, у вас есть число (которое может быть одной цифрой ).
В противном случае, если символ не является цифрой или не является пробелом, сделайте то же самое, что и для чисел: соберите во временную строку и покажите, когда она заканчивается.
Начать сначала.
Редактировать Пример кода по запросу:
std::string expression = "10 20 +";
for (std::string::const_iterator c = expression.begin(); c != expression.end(); )
{
std::string token;
// Skip whitespace
while (isspace(*c))
c++;
if (isdigit(*c))
{
while (isdigit(*c))
token += *c++;
std::cout << "Number: " << token << "\n";
}
else
{
while (!isidigit(*c) && !isspace(*c))
token += *c++;
std::cout << "Other: " << token << "\n";
}
}