在c ++中使用int main(int argc,char ** argv)

时间:2015-05-29 10:21:56

标签: c++ class main argv

我在尝试使用char** argv中的main时遇到问题。我的目标是使用argv[2]传递给另一个名为Game的类中的字符串。有人知道如何使用argv并将其作为字符串传递给另一个类吗?

int main(int argc, char **argv)
{
  Game game(argv[2]);
  game.runsecondmethod();
}

Game.cpp

Game::Game(std::string a)
{
   write.filename = a;
}
error, no match for call to (Game)(char*&)

1 个答案:

答案 0 :(得分:1)

您实际上并没有提供展示问题的代码,但是,为了回答您的问题,将argv[2]作为字符串传递给函数的方法包括

  #include <cstring>
  #include <iostream>
  void func(const char *s)
  {
       //  treat s as a zero terminated string

       if (std::strcmp(s, "Hello") == 0)
       {
            std::cout << "You said hello\n";
       }
  }

  int main(int argc, char **argv)
  {
      if (argc >= 3)
        func(argv[2]);
      else
         std::cout << "You have not supplied an argv[2]\n";
  }

  #include <string>
  #include <iostream>
  void func2(const std::string &s)
  {
       if (s == "Hello")
       {
            std::cout << "You said hello\n";
       }
  }

  int main(int argc, char **argv)
  {
      if (argc >= 3)
        func2(argv[2]);
      else
         std::cout << "You have not supplied an argv[2]\n";
  }

上面的第一个例子(除了使用std命名空间,std::cout和C ++标题)基本上是vanilla C。

第二个示例使用std::string类,因此可以使用==运算符比较字符串。请注意main(),在调用func2()时会隐式地将argv[2]转换为std::string(因为std::string具有允许转换的构造函数),然后将其传递给功能

在这两种情况下,main()都会检查argc以确保已将2个(或更多)参数传递给它。