微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用单个char *填充向量,指向C中char *数组的基数

如何解决用单个char *填充向量,指向C中char *数组的基数

假设我的char*的底数为char*[]。我知道数组中的每个char*都是以空值结尾的,最后一个条目是NULL。

char* args[] = {"foo","bar",NULL};

如果将其强制转换为char*,则应该获得"foo"的起始地址。

char* p = (char*)args;

现在,我只想用char*变量来填充char* p的向量。这可能吗?

我的代码

vector<char*> arguments;
bool null_terminated = true;
while(p!=NULL)
{
  if (null_terminated)
  {
    arguments.push_back((char *) p);
    null_terminated = false;
  }
  if ((*(char*)p) == '\0')
    null_terminated = true;
  p++;
}

但是,这似乎不起作用。有其他解决方法吗?

解决方法

我认为使用char* p之类的方法可以用reinterpret_cast填充向量,但这将是棘手,危险且无法保证的。我不推荐这个。

相反,我想用args的非空元素填充向量,我认为您应该使用一个指针指向数组char** p的元素,并使用它来遍历数组

它将是这样的:

for(char** p = args; *p != NULL; p++) {
    arguments.push_back(*p);
}

请注意,p指向元素,而取消引用的*p将成为元素。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。