【问题标题】:Implementing "app.exe -instruction file" notation in C++在 C++ 中实现“app.exe -指令文件”表示法
【发布时间】:2013-01-19 18:50:29
【问题描述】:

我的数据结构类有一个项目,它是一个使用二叉树和其他东西工作的文件压缩器。我们需要在命令行中使用以下说明“压缩”和“解压缩”任何给定文件:

对于压缩:compressor.exe -zip file.whatever

解压:compressor.exe -unzip file.zip

我们正在使用 C++ 进行编程。我在 Windows 中使用 IDE Code::Blocks 并使用 GCC 进行编译。

我的问题是:你是怎么实现的??!!你怎样才能让你的 .exe 在命令行中接收这些参数,然后按照你想要的方式执行它们?

另外,如果我想在 Linux 中编译该实现,有什么特别需要注意的吗?

感谢您的帮助

【问题讨论】:

  • 你应该接受 Greg D 的回答!

标签: c++ command-line-arguments


【解决方案1】:

您可能希望在编程文本中查找main 函数的签名,即程序的入口点。这就是您可以提取这些命令行参数的地方。

我不想比这更详细,因为这显然是任务的关键点,如果我发现自己和你一起工作,我希望你能够弄清楚这类事情一旦你收到适当的轻推,你就可以自己动手了。 :)

祝你好运!

【讨论】:

  • 'argc' 和 'argv[]'...我怀疑是这样! >=D 我以前从未使用过 main() 参数,但是......我想我的答案就在那里。是时候做一些研究了!谢谢克雷格! ^^
  • 哇 - 我喜欢你不想破坏这家伙查找乐趣的方式!
【解决方案2】:

我记得,单一 UNIX 规范/POSIX 在 unistd.h 中定义了 getopt 来为您处理参数解析。虽然这是一个 C 函数,但它也应该在 C++ 中工作。

GNU GLIBC has this 除了 getopt_long(在 getopt.h 中)支持 GNU 的扩展 --style 。

【讨论】:

  • 这个 Q 中没有指定,但是如果您查看 NeoGlitch 的其他问题,您会发现他需要独立于平台的解决方案。 getopt 不是 ANSI C,因此在 Window 平台上不可用。
  • 我只是假设,因为他使用的是 GCC,所以他也在使用类似 MinGW 的东西,它有 unistd.h 和 getopt.h。
  • 还有一个用于 windows 的 getopt:getpot。您可以从 sourceforge 下载它。为我工作。
【解决方案3】:

Lo logré,我明白了!

我现在对如何在 ma​​in() 函数中使用 argcargv[ ] 参数有了基本的了解(我 总是想知道它们有什么好处......)。例如,如果我在命令行中输入:

compressor.exe -解压文件.zip

然后:

  • argc 在 '3' 中初始化(行中的参数数量)
  • argv[0] == "compressor.exe"(应用名称)
  • argv[1] == "-unzip"
  • argv[2] == "file.zip"

Greg(不是“Creg”,抱歉 =P)和 Bemrose,谢谢你们的帮助! ^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2013-10-10
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多