我如何以标准方式从 C++ 中的 argc 和 argv 中受益?

发布于 2024-09-05 14:43:38 字数 137 浏览 13 评论 0原文

检索和检查 argc 和 argv 的标准方法是什么?最佳用法是什么以及如何在 Linux 中执行此操作?

请举例说明。

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

谢谢

What is the standard way to retrive and check for the argc and argv and what is the best usage and how to do that in linux?

Please provide examples.

"I want to have a complex command-line options and I want to use them in my application"
That what I mean.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

×纯※雪 2024-09-12 14:43:38

有(至少)两种方法来编写 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;
  }
}

There are (at least) two ways to write your main function:

int main()
{
}

and

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

If you use the second option, then your command line arguments will be in argv, which has argc # of elements:

#include <iostream>
int main(int argc, char* argv[])
{
  for (int i = 0; i < argc; ++i)
  {
    std::cout << "arg #" << i << ": " << argv[i] << std::endl;
  }
}
后eg是否自 2024-09-12 14:43:38

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

Please use boost program options http://www.boost.org/doc/html/program_options.html for access to the command arguments.

開玄 2024-09-12 14:43:38

你想对他们做什么?

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

// 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.";
    }
}

这取决于您想要做什么。如果您有多种类型的参数等..那么最好使用类似 增强程序选项

What do you want to do with them?

A simple example of usage is like the following:

// 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.";
    }
}

It depends on what you are trying to do. If you have many types of arguments etc.. Then it is better to use something like boost program options.

多孤肩上扛 2024-09-12 14:43:38
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。

int main(int argc, char* argv[])
{
    for(int i = 0; i < argc; i++)
        printf("%s\n", argv[i]);
}

Works in both C and C++, though in C++ you should include cstdio and in C you should include stdio.h.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文