如何解决用单个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 举报,一经查实,本站将立刻删除。