tocut.erase(0)
стирает все из tocut
. Аргументом является первый символ, который нужно удалить, а длина по умолчанию - «все».
tocut[0 == 13]
должно быть tocut[0] == 13
. Это очень разные заявления. Также, пожалуйста, сравните со значениями символов ('\t'
) вместо целых чисел. Между прочим, это в сочетании с предыдущей является вашей реальной проблемой: tocut[0 == 13]
становится tocut[false]
, то есть tocut[0]
, то есть true
. Таким образом, цикл продолжается до тех пор, пока tocut
не станет пустым, что является немедленным (так как вы стираете все это слишком усердно с первого раза).
Чистый эффект двух вышеупомянутых ошибок заключается в том, что при достижении оператора find
, tocut
является пустой строкой, которая не содержит пробела. Идем дальше ...
Вы можете использовать функцию substr
вместо цикла для перехода с tocut
на totoken
.
Ваша последняя строка tocut.erase(start, finish)
ничего не делает полезной, поскольку tocut
был передан по значению, и вы сразу же вернетесь после этого.