检查argc和argv的标准方法是什么?在linux中最好的用法是什么?我如何从C++中的argc和argv中受益?
请提供示例。
“我想要一个复杂的命令行选项,我想在我的应用程序中使用它们” 那就是我的意思。
感谢
检查argc和argv的标准方法是什么?在linux中最好的用法是什么?我如何从C++中的argc和argv中受益?
请提供示例。
“我想要一个复杂的命令行选项,我想在我的应用程序中使用它们” 那就是我的意思。
感谢
P租赁使用boost程序选项http://www.boost.org/doc/html/program_options.html以访问命令参数。
+1显示OP在哪里购买车轮而不是建造一个。 – 2010-06-15 17:27:21
int main(int argc, char* argv[])
{
for(int i = 0; i < argc; i++)
printf("%s\n", argv[i]);
}
工程在C和C++,但在C++中,你应该包括cstdio和c您应该包含了stdio.h。
-1为推荐printf – 2010-06-15 17:25:11
而不是正确回答实际问题?我不是C++专家,所以请原谅我的无知,但是'printf'有什么可怕的地方? – Jeriko 2010-06-15 17:28:00
如果问题被标记为C,那么printf就可以。但是这个问题被标记为C++,因此您应该使用为您提供的类型安全机制,而不是依赖于与其他语言的向后兼容性的语言。 – 2010-06-15 18:00:27
有(至少)两种方式来写你main
功能:
int main()
{
}
和
int main(int argc, char* argv[])
{
}
如果你使用第二个选项,那么你的命令行参数将在argv
,其中有argc
#元素的数量:
#include <iostream>
int main(int argc, char* argv[])
{
for (int i = 0; i < argc; ++i)
{
std::cout << "arg #" << i << ": " << argv[i] << std::endl;
}
}
使用C++流+1。 – 2010-06-15 17:25:41
用于显示数组语法的+1,如此多的只是“char ** argv”。我知道这是相同的 – pestilence669 2012-04-01 23:55:45
'std :: vector
你想和他们做什么?
使用的一个简单的例子是这样的:
// Get numbers from the command line, and put them in a vector.
int main(int argc, char* argv[])
{
/* get the numbers from the command line. For example:
$ my_prog 1 2 3 4 5 6 7 8 9 10
*/
std::vector<int> numbers(argc-1);
try
{
std::transform(argv+1, argv+argc, numbers.begin(),
boost::lexical_cast<int, char*>);
}
catch(const std::exception&)
{
std::cout << "Error: You have entered invalid numbers.";
}
}
这取决于你正在尝试做的。如果你有很多类型的参数等等。那么最好使用类似boost program options
的东西。
+1为std :: transform – 2010-06-15 17:26:38
你是什么意思“检查?”无论你有'int main()'还是你有'int main(int argc,char * argv [])''。如果你有前者,你就没有参数向量,如果你有后者的话。 – 2010-06-15 17:16:11
你想完成什么?一堆简单的参数?复杂的命令行选项? – Cascabel 2010-06-15 17:16:45
非常不清楚的问题。您不必检索argc/argv - 它们作为参数传递给'main()'。 – 2010-06-15 17:16:46