在 C++ 中使用 int main(int argc, char **argv)
Using int main(int argc, char **argv) in c++
我在尝试使用 main
中的 char** argv
时遇到问题。我的目标是使用 argv[2]
传递给另一个名为 Game
的 class 中的字符串。有人知道我如何使用 argv
并将其作为字符串传递给另一个 class 吗?
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*&)
您实际上并没有提供展示问题的代码,但是为了回答您的问题,将 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++ headers)本质上是普通的 C。
第二个示例使用 std::string
class,因此可以使用 ==
运算符比较字符串。请注意,当调用 func2()
时,main()
隐式地将 argv[2]
转换为 std::string
(因为 std::string
具有允许该转换的构造函数),然后传递给功能。
在这两种情况下,main()
检查 argc
以确保已将 2 个(或更多)参数传递给它。
我在尝试使用 main
中的 char** argv
时遇到问题。我的目标是使用 argv[2]
传递给另一个名为 Game
的 class 中的字符串。有人知道我如何使用 argv
并将其作为字符串传递给另一个 class 吗?
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*&)
您实际上并没有提供展示问题的代码,但是为了回答您的问题,将 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++ headers)本质上是普通的 C。
第二个示例使用 std::string
class,因此可以使用 ==
运算符比较字符串。请注意,当调用 func2()
时,main()
隐式地将 argv[2]
转换为 std::string
(因为 std::string
具有允许该转换的构造函数),然后传递给功能。
在这两种情况下,main()
检查 argc
以确保已将 2 个(或更多)参数传递给它。