我对指针和数组的使用感到困惑。 我试图将一些值从命令行传递给数组。我需要使用该数组进行其他处理。
int main(int argc, char *argv[])
{
std::vector<const char *> args {};
args.insert(args.end(), argv+1, argv + argc);
const char **arr = args.data();
}
这可行,但不是我想要的,原始代码正在使用
const char *arr[] = {"some", "vaule", "here"};
我想将值传递给arr而不是代码中的赋值。
我需要数组,但下面的代码不起作用。
const char *arr[] = args.data();
所以我想保留我的数组,因为其他处理,我该怎么办呢? 谢谢!
答案 0 :(得分:0)
你在这里混淆了各种各样的想法。
char * argv []是一个指向参数数组的指针,它们本身(因为它们是c&#39;字符串&#39;)是字符数组。因此argv是一个二维数组。
像
这样的变量赋值POST
不起作用,你只能指定一个静态列表,如{&#34; some&#34;,&#34; vaule&#34;,&#34; here&#34;}
为了将arr中的值设置为与argv相同的值,需要循环遍历argv并将字符串的值复制到arr中。
这可能会变得复杂,因为你用c ++编写,你也可以使用向量。
你会做这样的事情:
const char *arr[] = args.data();
在这种情况下,您将拥有一个包含传入参数值的向量。
希望这就是你所要求的。
答案 1 :(得分:0)
char **arr
实际上与char *argv[]
的类型相同
您可以直接指定它:
const char **arr = argv;
编译器可能会显示警告,但应该编译。