将char ** arr转换为char * arr []

时间:2017-07-19 18:03:56

标签: arrays pointers

我对指针和数组的使用感到困惑。 我试图将一些值从命令行传递给数组。我需要使用该数组进行其他处理。

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();

所以我想保留我的数组,因为其他处理,我该怎么办呢? 谢谢!

2 个答案:

答案 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;

编译器可能会显示警告,但应该编译。