一个超级简单的C++程序,但是它的运行结果并非所期望的,该如何解决

一个超级简单的C++程序,但是它的运行结果并非所期望的
C/C++ code
#include <iostream>
int main(){
    std::cout<<"Give me a file a.txt in this directory"<<std::endl;
    system("print a.txt");
    return 0;
}

先声明我的电脑没有打印机,所以如果在CMD下直接运行print a.txt时,就会提示说“无法初始化PRN设备”,这在情理之中。

现在比如这个程序编译之后生成main.exe,然后若双击运行,则会不停地打出“Give me a file a.txt in this directory”,而不会打印出“无法初始化PRN设备”。(这个用VC6.0,MinGWStudio编译出的程序都是这样)

很疑惑的是它为什么不先输出“Give me a flie...”,再输出“无法初始化PRN设备”,然后马上关闭呢?

现在又试了下,在CMD下输入main.exe然后回车,会发现结果就是期望的,难道双击和以命令行方式运行程序有区别吗?好像程序执行的逻辑变了似的,疯狂地输出“Give me a file...”?

------解决方案--------------------
无责任猜测缓冲问题
------解决方案--------------------
c++不容易啊
------解决方案--------------------
执行的目录可能不一样。双击的目录是程序所在的目录,cmd的目录是提示符
------解决方案--------------------
system("print a.txt");
系统命令的执行,双击只是事件的响应吧,只执行你的应用软件程序吧
------解决方案--------------------
个人感觉是这样的。
在CMD下执行print时候,由于没有打印机,print返回了一个错误码,然后操作系统根据这个错误码来提示你。
在你自己程序里面调用print时候,你没有处理错误码。所以不会出现那句话。
------解决方案--------------------
不明所以的人过来围观下。
------解决方案--------------------
这就是控制台程序和Win32程序的差别

这是一个控制台程序
可以插入
system("print a.txt");
///////
system("pause");
///////
return 0;


------解决方案--------------------
vs2005 have no problem.