Неверно работает парсинг слов
Я пытаюсь написать парсер текста, но возникает проблема где то в этом куске кода:
class TokenParser
{
private:
vector<string>lines;
vector<string>tokens;
vector<string>words;
vector<int>digits;
string delimiter = " \t\n";
public:
TokenParser(ifstream& in)//считываем строки из исходного файла
{
string new_line;
string new_token;
string my_line;
while (getline(in, new_line))//считываем строки в вектор строк
{
lines.push_back(new_line);
}
for (auto line : lines)//итерируемся по вектору строк и считываем все токены в вектор токенов
{
my_line = line;
while (true)
{
size_t delimiter_pos = my_line.find_first_of(delimiter);
if (delimiter_pos == string::npos)
{
tokens.push_back(my_line);
break;
}
else
{
if (delimiter_pos == 0)
{
my_line = my_line.substr(delimiter_pos + 1);
}
else
{
new_token = my_line.substr(0, delimiter_pos);
tokens.push_back(new_token);
my_line = my_line.substr(delimiter_pos + 1);
}
}
}
}
в токены, видимо, попадают пустые строки и я никак не могу понять в чем проблема и как исправить.