如何在字符指针数组中保留指向每个单词的指针?

How to keep a pointer to each word in an array of character pointers?

本文关键字:指针 单词 保留 字符 数组      更新时间:2023-10-16

>标题几乎解释了这一切。我只是好奇你会怎么做。我在网上查了一下,我发现的东西并不一定能给我明确的答案,因为它们似乎不是我真正想要的。希望有人能帮忙。

这将是我的方法。确保在堆上分配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结束时终止。另一种方法是用替换空格,但是很难读取整个字符串。