Просто замените
while (*pStart != delim)
на эту строку
while (*pStart != '\0' && strchr(" \t\n", *pStart) == NULL)
Стандартная функция strchr
(объявленная в заголовке string.h
) ищет символ (заданный в качестве второго аргумента)в C-строке (заданной в качестве первого аргумента) и возвращает указатель на строку из позиции, где этот символ появляется первым.Таким образом, strchr(" \t\n", *pStart) == NULL
означает, что текущий символ (*pStart
) не найден в строке " \t\n"
, и это не разделитель!(Измените эту строку разделителя " \t\n"
, чтобы адаптировать ее к вашим потребностям, конечно.)
Это решение является коротким и простым способом проверить, является ли данный символ в наборе (обычно малом) из заданных интересных символов.И он использует стандартную функцию.
Кстати, вы можете сделать это, используя не только C-строку, но и std::string
.Все, что вам нужно, это объявить const std::string
с " \t\n"
-подобным значением, а затем заменить strchr
на find
метод объявленной строки разделителя.