1

检索和检查 argc 和 argv 的标准方法是什么,最好的用法是什么以及如何在 linux 中做到这一点?

请提供例子。

“我想要一个复杂的命令行选项,我想在我的应用程序中使用它们”这就是我的意思。

谢谢

4

4 回答 4

7

有(至少)两种方法来编写你的main函数:

int main()
{
}

int main(int argc, char* argv[])
{
}

如果您使用第二个选项,那么您的命令行参数将是 in 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;
  }
}
于 2010-06-15T17:19:07.600 回答
7

请使用 boost 程序选项http://www.boost.org/doc/html/program_options.html来访问命令参数。

于 2010-06-15T17:19:09.487 回答
4

你想对他们做什么?

一个简单的用法示例如下:

// 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.

于 2010-06-15T17:19:49.083 回答
2
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。

于 2010-06-15T17:17:56.353 回答