小编Jay*_*can的帖子

如何在c ++中将命令行参数的整个集合(char**)作为只读传递?

假设我有一个这样的程序:

#include <iostream>
#include <string>
#include <vector>

// Takes values and outputs a string vector.
std::vector<std::string> foo(const int argc, char* args[]) {
    std::vector<std::string> strings;
    for (int i = 0; i < argc; i++)
        strings.push_back(args[i]);
    return strings;
}

int main(int argc, char *args[]) {

    std::vector<std::string> strings = foo(argc, args);

    for (unsigned int i = 0; i < strings.size(); i++)
        std::cout << strings[i] << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我要尝试将main()函数的char**参数传递给另一个函数或类.(我知道有更好的方法可以实现上述程序的功能,我的问题是将char**参数作为只读方式传递).

问题:

  1. 我发现我不能像第一个那样使第二个foo()参数成为const.为什么是这样?char**无法转换为const char**?
  2. 我想把这个论点称为"只读".我不知道如何解决这个问题,如果它是一个字符串我会通过const引用传递它,但我不知道如何用指针来解决这个问题?

c++ pass-by-reference char-pointer pass-by-pointer

7
推荐指数
1
解决办法
162
查看次数