首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将char **arr转换为char*arr[]

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

Stack Overflow用户
提问于 2017-07-19 18:03:56
回答 2查看 361关注 0票数 0

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

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    std::vector<const char *> args {};
    args.insert(args.end(), argv+1, argv + argc);

    const char **arr = args.data();
}

这是可行的,但不是我想要的,原来的代码正在使用

代码语言:javascript
复制
const char *arr[] = {"some", "vaule", "here"};

我希望将值传递给arr,而不是代码中的赋值。

我需要数组,但下面的代码不能工作。

代码语言:javascript
复制
const char *arr[] = args.data();

因此,我想保持我的数组像这样,因为其他的处理,我怎么做呢?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-19 18:13:21

你在这里混淆了各种各样的想法。

char * argv[]是指向参数数组的指针,这些参数本身(因为它们是c‘字符串’)是字符数组。因此,argv是一个二维数组。

变量赋值

代码语言:javascript
复制
const char *arr[] = args.data(); 

不工作,只能使用静态列表赋值,如{“一些”、"vaule“、”这里“}

为了将arr中的值设置为与argv相同的值,您需要遍历argv并将字符串的值复制到arr中。

这可能会变得很复杂,而且由于您是用c++编写的,所以您最好使用向量。

你会做这样的事情:

代码语言:javascript
复制
std::vector<std::string> arr(argv + 1, argv + argc);

在这种情况下,您将得到一个包含传入的参数值的向量。

希望这就是你想要的。

票数 0
EN

Stack Overflow用户

发布于 2017-07-19 18:22:07

char **arr实际上与char *argv[]的类型相同,您可以直接分配它:

代码语言:javascript
复制
const char **arr = argv;

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45197929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档