argc C++中的argv参数(游戏编程)
argc argv parameters in C++ - (games programming)
今晚我不得不考虑的另一件"新"事情:
int main(argc, char *argv[])
我不明白为什么我想从cmd行读入,但你永远不会知道!为什么我不直接使用getline
并将其读取为字符串呢?或者getch
,如果它是其他东西的话?
我怀疑答案与要处理的代码量有关——在#include <string>
上使用这样的东西必然会使用更少的计算能力,对吗?
编辑:一年过去了,我觉得很傻,在大学里从来没有真正教过关于cmd行输入的课程(我知道对,我上的是什么课程…):)
argc
和argv
与标准输入和输出无关。如果我说
myapp Drink More Ovaltine
argc
将是4,argv
将包含程序名称,然后是"Drink",再是"More",最后是"Ovaltine"。
CCD_ 8只是从输入流中读取数据。它永远不会看到命令行参数。(无论如何,除非你从argv
中得到它们,并将它们放入stringstream
中。即使这样,这又有什么意义呢?)
至于#include
,这也与运行时I/O无关。它用于告诉编译器(或者通常是预处理器)在编译期间包含一个C源文件。你不能只是#include
一个任意的二进制或其他东西。(完成include后,生成的一堆字符必须形成有效的C++代码)。到了运行时,该文件已经包含在内——到了运行时间,应用程序甚至不知道该文件存在,因此甚至不会考虑读取它
简称:
argv
和argc
用于访问用于启动应用程序的命令行中的内容。它与I/O完全无关getline
用于在运行时从流输入,并且几乎可以读取任何文件#include
用于在编译时插入C++代码,并且只能真正用于源代码
正如你现在所希望看到的,这三种机制是完全独立和不相关的,其中一种几乎永远不能用来代替另一种。
作为一名游戏程序员,我不明白为什么我想从cmd行读入,但你永远不会知道!
通常,对于GUI程序,通过命令行传递的内容往往是隐藏的或调试选项。
例如,IE有一个-k
命令行开关,该开关无法在正常首选项中设置。这个开关使IE在很多东西被禁用的情况下以kiosk模式运行。这是普通用户永远不应该想做的事情,因为如果你在kiosk模式下运行IE,你就无法访问其他任何东西(这就像把Windows变成MsIeOS)。
Googlechrome有一个命令行参数--first-run
,它强制它重新初始化用户首选项并弹出首次运行设置对话框。如果你碰巧破坏了你的Chrome偏好,这是非常有用的。
游戏是相似的。Halo2有一个-windowed
命令行参数,它在窗口而不是全屏中启动游戏。以下是Halo2命令行参数列表:http://support.microsoft.com/kb/830487
如果你想不出命令行参数的任何用途,那么就不要使用它。这并不意味着其他人找不到它的用途。
对于各种程序,只需在谷歌上搜索"[程序名称]命令行参数",就可以找出其中的内容(如果有的话)。你会发现,像你这样的人编写的程序无法使用命令行参数,因此这些程序没有任何用途。
- Frank Luna 在他的书"使用 DirectX12 进行 3D 游戏编程"的介绍中盒子示例的问题
- 使用虚幻引擎4编程的平台游戏中的偏转问题
- C++ Qt - 检查 Steam 游戏是否以编程方式运行
- argc C++中的argv参数(游戏编程)
- 在什么编程语言游戏引擎上编写"Frostbit 3"?
- 很好的具体地方(书籍/教程)开始用C / C++编程游戏
- C++视频游戏编程IDE
- C++(游戏编程)中同一对象的实例
- C++游戏编程帮助.超级简单
- SDL C++游戏编程帮助(简单)
- 使用TDD进行食人魔游戏编程
- C++ SFML游戏编程链接错误
- C++中的游戏编程,这条老行是什么,为什么它不起作用?
- 游戏编程最佳实践,课堂内外运动
- 致命错误LNK1169:在游戏编程中发现一个或多个乘法定义符号
- 2D游戏编程Linux, OSX,和Windows - c++ /Python/OpenGL
- 井字游戏编程
- 初学者尝试通过游戏编程学习继承
- C++游戏编程。错误:令牌之前的预期')' ':'
- 在完成游戏编程后,如何在可执行文件中绑定资产并将其打包,以便分发给其他人