Re: Функция разбора строки
От: Alvin  
Дата: 05.09.03 21:47
Оценка:
Здравствуйте, Olegator, Вы писали:

O>Есть задача: разобрать произвольную строку символов так, чтобы в результате получился массив, содержащий слова этой строки по отдельности.


O>Как реализовать эту задачу в виде функции на C++?


Предположим, 'строка' — это класс, называющийся String, который умеет:
— инициализировать себя char* (конструктор и оператор присваивания)
— присоединять к себе символы и char* посредством оператора +=
— возвращать свою длину (метод length() )
— приводить себя к const char* (оператор const char*)

Тогда можно так:
void 
SplitString(const char *pszStringToSplit, const char *pszDelimiters, std::vector<String> &vecWords)
{
   String strCurWord("");
   vecWords.clear();
   for (;*pszStringToSplit; pszStringToSplit++)
   {
      for (const char *pszDelim = pszDelimiters; *pszDelim; pszDelim++)
      {
         if (*pszStringToSplit == *pszDelim)
         {
             if (strCurWord.length())
             {
                vecWords.push_back(strCurWord);
                strCurWord = "";
             }
         }
         else
             strCurWord += *pszStringToSplit;
      }
   }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.