我有一个简单的C ++程序,它接受input和输出一些string。 喜欢这个:
$ ./game $ what kind of game? type r for regular,s for special. $ r $ choose a number from 1 - 10 $ 1 $ no try again $ 2 $ no try again $ 5 $ yes you WIN!
现在我想写一个C ++程序可以运行这个C ++程序,并自动播放游戏,无需用户input,然后输出到文件或标准输出。
运行它看起来像这样:
./program game r > outputfile
游戏是游戏程序,r玩正规风格。
以编程方式获取用于在非开发人员Windows环境中构build进程或库的DLL列表
Pipe()不能正常工作 – linux
boost.filesystem create_directories抛出std :: bad_alloc
有没有办法使窗口输出ansi转义序列
从Cstring构build参数列表
我应该怎么做? 我需要这个程序的主要原因是我想做一个更大的程序自动testing。
如何解决“上传到asp.net IIS服务器时不支持”MessageEncoder内容typesparsing“错误?
setuid()C函数也改变euid值?
LTSB Windows 10商店应用程序
是否有可能使用Visual Studiobuild立WinDBG扩展?
如何将parameter passing给由fork()创build的进程
你可以从<cstdlib>使用std::system :
std::system("game r > outputfile");
返回值是./program ,唯一的参数必须是char const *类型。
虽然没有标准的方法来运行一个程序,并为其提供标准输入。 通过你的命令行来判断,你正在使用一个Unix变体,其中<stdio.h>中的popen应该可以工作:
FILE *sub = popen("game r > outputfile","w");
(但对于简单的测试,我建议将程序的核心逻辑作为一组函数/类来实现,这些函数/类可以由循环中的自定义主函数运行;或者选择您最喜欢的脚本语言来处理这类事情。 )
给主要来源添加一个调用者函数并控制循环,记录和馈送输入,会更有效率。 这也不需要系统调用或其他魔法来拉动。 作为一名游戏程序员,我们尽可能地发挥自己的游戏来帮助调试,几乎总是通过内部代码完成,而不是通过外部脚本或系统调用。 它也使喂养可行的输入更容易。
这种情况下喊出一个“脚本”,恕我直言。
Bash,Perl,Python – 你的名字。
最简单的情况:
只需编写一个bash脚本来调用./program game r > outputfile 。
或./program game r < test_input.txt > test_output.txt
对于更高级的场景,你可能想看看“ 期望 ”。
您可能还想看看“STAF”,这可能是“自动化测试自动化”的好方法:
http://staf.sourceforge.net/current/STAFFAQ.htm
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。