Здравствуйте, 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;
}
}
}