Это был бы мой подход. Убедитесь, что в куче выделено char *str
, чтобы указатели в векторе не болтались.
std::vector<char*> word_pointers(char *str)
{
std::vector<char*> words; // to store pointers to beginning of words
bool start = true; // marks start of word
for (int i = 0; str[i]; ++i) // expects null-terminated string
{
if (start && str[i] != ' ')
words.push_back(str + i);
start = (str[i] == ' '); // is the next character qualified for word
}
return words;
}
Помните, что элементы char *
вектора заканчиваются только в конце str
. Альтернативой может быть замена пробелов на \0
, но тогда будет трудно прочитать всю строку.