Как сохранить указатель на каждое слово в массиве символьных указателей? - PullRequest
0 голосов
/ 08 мая 2018

Название в значительной степени объясняет все это. Мне просто любопытно, как бы вы поступили так. Я посмотрел это онлайн, и то, что я нашел, не обязательно дает мне определенные ответы в том смысле, что они, кажется, не являются тем, что я на самом деле ищу. Надеюсь, кто-то может помочь.

1 Ответ

0 голосов
/ 08 мая 2018

Это был бы мой подход. Убедитесь, что в куче выделено 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, но тогда будет трудно прочитать всю строку.

...