如何在非控制台程序中使用 iostream ?

adie20018u8 2006-11-02 02:01:40
在使用 WinMain,
连接开关 (/SUBSYSTEM:WINDOWS)
的程序中如何使用控制台?

并且使 std::cout/cin printf/scanf 等等能正确工作?
...全文
2369 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
THQ 2006-11-04
  • 打赏
  • 举报
回复
mark
argenCHN 2006-11-04
  • 打赏
  • 举报
回复
gui程序用不到了那个吧
atomspace 2006-11-04
  • 打赏
  • 举报
回复
不管是Win32 Application还是Console Application,都可以用cout、cin、printf、scanf等控制台输入输出函数。只是程序运行若不带控制台窗口,这些函数的“效果”没法看见。
程序是否带控制台窗口是在编译的时候由编译器的某个参数决定,最终反映在PE文件头的某个Byte,记得不太清楚了。可以通过修改这个Byte来控制程序是否带控制台窗口。

39457760 2006-11-03
  • 打赏
  • 举报
回复
好贴
ChrisAK 2006-11-02
  • 打赏
  • 举报
回复
实在需要控制台的话用AllocConsole申请一个不就Ok了?
tlz1016 2006-11-02
  • 打赏
  • 举报
回复
好帖呀
mLee79 2006-11-02
  • 打赏
  • 举报
回复
顶 ..
个人觉得还是命令行好用些 ...
pcboyxhy 2006-11-02
  • 打赏
  • 举报
回复
个人觉得
软件还是命令行的比较好用一些(美工制作除外)
csShooter 2006-11-02
  • 打赏
  • 举报
回复
mark
adie20018u8 2006-11-02
  • 打赏
  • 举报
回复
如楼上所言
adintr 2006-11-02
  • 打赏
  • 举报
回复
设置 subsystem:console 当以 GUI 方式运行的时候即使马上关闭控制台,也会看到控制台闪一下之后才出 GUI 界面
mLee79 2006-11-02
  • 打赏
  • 举报
回复
cmd 的特性好像没啥办法改变, 我觉得你既然有这个要求, 为啥不设置 subsystem:console , 自己重写下启动代码就是 ....
OOPhaisky 2006-11-02
  • 打赏
  • 举报
回复
支持一下^_^
adie20018u8 2006-11-02
  • 打赏
  • 举报
回复
哪个是 cmd 的毛病, subsystem=windows 的程序它运行了就不会等待程序的退出, 结果 cmd 和这个程序就在抢控制台, 搞的控制台乱七八糟的, 有些输入让 cmd 接收了, 有些输入让程序获得了, 还是用 bash shell 方便些 ....

--------------------------------

如果是自己用,随便就将就了,给别人用的,你能保证他有 bash shell?
cmd 的这种特性没有办法改变?
neustrong 2006-11-02
  • 打赏
  • 举报
回复
学习。。
taodm 2006-11-02
  • 打赏
  • 举报
回复
hxblvc(还是好好学吧...)
你不会开个非模态对话框,里面用listbox来显示调试信息?
hxblvc 2006-11-02
  • 打赏
  • 举报
回复
在有GUI的同的,有个Console也是很有必要的.

我现在的项目中用到了这样的功能,是为了输入程序的的一些调试信息:


void CGUIApp::SetDEBUGtoConsole()
{
#ifdef _DEBUG
AllocConsole();
int hfid = _open_osfhandle(
(long) GetStdHandle(STD_OUTPUT_HANDLE),
_O_TEXT
);
fclose(stdout);
fclose(stderr);
FILE* hf = _fdopen( hfid, "w" );
memcpy(stdout, hf, sizeof(FILE));
memcpy(stderr, hf, sizeof(FILE));
#endif
}

void CGUIApp::DelConsole()
{
#ifdef _DEBUG
// fclose( hf);
FreeConsole();
#endif
}

// end of file.

mLee79 2006-11-02
  • 打赏
  • 举报
回复
哪个是 cmd 的毛病, subsystem=windows 的程序它运行了就不会等待程序的退出, 结果 cmd 和这个程序就在抢控制台, 搞的控制台乱七八糟的, 有些输入让 cmd 接收了, 有些输入让程序获得了, 还是用 bash shell 方便些 ....
adie20018u8 2006-11-02
  • 打赏
  • 举报
回复
to mLee79():

在新窗口的情况下正常,如果在命令行下执行就:

show me the money
greedisgood 1000000
34234
'34234' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
adie20018u8 2006-11-02
  • 打赏
  • 举报
回复
对于一些大点的项目来说,提供多个个执行体固然是一个极佳办法.
但对一些小应用来说有些时候不太方便.


如果能在一个执行体内完成的话最好了.
没办法的情况下可以考虑多个执行体来完成.


我举 WinRar 只是想证明使用 cui 的需求.
加载更多回复(18)

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧