需求是这样的:学生用visual c++ 编写控制台程序做实验,可能会用到cin和cout,我想在不影响学生编写调试程序的情况下再将程序的输出内容送到一个文件里,进而对这个文件的内容来做判断,从而知道学生做的结果对不对。网络上有用管道的方法获取控制台的输出,但都是将控制台在后台隐藏运行的。有没好办法实现我的需求呢?

解决方案 »

  1.   

    你可以把要输出的东西转化成符串,然后写到一个.txt里面去,以前我都是这样,用文件操作函数,好像是OPENFILE,writefile这些函数,或者用CFile也行.你试试
      

  2.   

    http://blog.csdn.net/VisualEleven/archive/2010/04/22/5517541.aspx
      

  3.   

    楼上几位可能还是没理解我的意思,我是说在完全不用影响学生实验的情况下捕获程序的输出,也就是说学生编写代码和调试和平常是一摸一样的,我一开始想着在 project 的配置上做手脚,在指定debug的可执行程序的时候用管道 > 或者 >> 送到文件里,但这样的话,调试的时候,console窗口里cout的输出就看不到了。如果cout能同时输出到console和文件里就好了。
      

  4.   

    你可能需要一个像unix/linux的tee一样的工具。这个工具windows下也有,或者你可以自己写一个。很简单,就是把stdin的东东即写到stdout也写到文件就可以了。
      

  5.   

    学生用的一般是printf函数输出,只粗略的看过printf函数,结果貌似是用WriteFile来写管道似的.
    你可以inline hook printf函数或者WriteFile.前者不许判断,后者判断下是否是写管道就行了.
    学生->printf->jmp到我的代码来记录打印结果->jmp回到printf执行下去.
      

  6.   

    能否通过读取缓冲区的内容提取内容stdin?