为什么我的C++ main()不接受我的参数
问题描述:
我有一个在Fedora 20中运行的C++程序。当我通过main()启动它时,它可以不带任何参数或一个参数。现在我需要更多的参数,但不知何故,它拒绝采用新的参数。为什么我的C++ main()不接受我的参数
这是我如何启动它:
$ ./runtest.sh IRE 22 33
这是最主要的()内的第一行COUT:
UICommTest开始... argc = 2
我期望argc = 4。
这是我的主要():
int main(int argc, char*argv[])
{
std::cout << "UICommTest is starting ... argc="<< argc << std::endl;
if(argc == 1)
{
UICommTest::startTest(false);
}
else if(argc == 2)
{
if(string(argv[1]) == "true")
{
UICommTest::startTest(true);
}
else if(string(argv[1]) == "ire")
{
UICommTest::startTestIRE("-1", "-1");
}
else
{
std::cout << "Usage:: ..." << std::endl;
}
}
else if(argc == 4)
{
if(string(argv[1]) == "ire")
{
UICommTest::startTestIRE(argv[2], argv[3]);
}
else
{
std::cout << "Usage:: ..." << std::endl;
}
}
else
{
std::cout << "Usage:: ..." << std::endl;
}
return EXIT_SUCCESS;
}
我做清洁,使几次。我相信新的变化是有的。任何人都可以为此提供帮助?
答
所以你有一个shell脚本runtest.sh
,看来。在这里面,你可能有这样的线路(路径可能不仅仅是./
东西长):
./UICommTest "$1" "$2"
这应该是显而易见的是,这会给你的程序只有2个参数。该行改成这样:
./UICommTest "[email protected]"
注:使用"[email protected]"
是很重要的细节,它具有特殊的功能,从而扩展到"$1" "$2" "$3" ...
等同。引号是重要的,所以如果你传递一个带空格的参数,它仍然是一个参数。
runtest.sh是一个shell脚本或程序的名称? – Fefux
确保'runtest.sh'调用包含所有参数的可执行文件。简单的例子'exec a.out $ *' –
你的sh可能会消耗你输入的参数。 –