如何在字符指针数组中保留指向每个单词的指针?
How to keep a pointer to each word in an array of character pointers?
>标题几乎解释了这一切。我只是好奇你会怎么做。我在网上查了一下,我发现的东西并不一定能给我明确的答案,因为它们似乎不是我真正想要的。希望有人能帮忙。
这将是我的方法。确保在堆上分配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
结束时终止。另一种方法是用