Ale*_*lex 37 c++ windows console
我的问题非常简单,但是我正在从C#转换到C++,我想知道什么命令在C++中打开控制台窗口?
我知道在C#中,最基本的方法是:
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
或者,如果您想让用户按任意键,则:
Console.ReadKey(true);
Run Code Online (Sandbox Code Playgroud)
你是如何用C++做到的?我在这里问这个简单问题的唯一原因是,我无法在互联网上找到一个好的和明确的答案.
Cog*_*eel 65
怎么样std::cin.get();?
此外,如果您使用的是Visual Studio,则无需调试即可运行(默认情况下为CTRL-F5),并且最终不会关闭控制台.如果你通过调试运行它,你总是可以在结束括号中放置一个断点main().
Mik*_*ler 23
正确的方式
cin.get();
Run Code Online (Sandbox Code Playgroud)
cin.get()是C++兼容的,可移植的.它将从标准输入(stdin)中检索下一个字符.用户可以按回车键,然后您的程序将继续执行,或在我们的情况下终止.
微软的看法
Microsoft有一篇名为" 防止控制台窗口消失 "的知识库文章.它描述了如何仅在必要时暂停执行,即仅当用户通过从资源管理器执行程序生成新的控制台窗口时.代码在C中,我在这里重现:
#include <windows.h>
#include <stdio.h>
#include <conio.h>
CONSOLE_SCREEN_BUFFER_INFO csbi;
HANDLE hStdOutput;
BOOL bUsePause;
void main(void)
{
hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
if (!GetConsoleScreenBufferInfo(hStdOutput, &csbi))
{
printf("GetConsoleScreenBufferInfo failed: %d\n", GetLastError());
return;
}
// if cursor position is (0,0) then use pause
bUsePause = ((!csbi.dwCursorPosition.X) &&
(!csbi.dwCursorPosition.Y));
printf("Interesting information to read.\n");
printf("More interesting information to read.\n");
// only pause if running in separate console window.
if (bUsePause)
{
int ch;
printf("\n\tPress any key to exit...\n");
ch = getch();
}
}
Run Code Online (Sandbox Code Playgroud)
我自己也用过它,这是一个很好的方法,当然只能在windows下使用它.另请注意,您可以使用以下命令启动程序,在Windows下以非编程方式实现此目的:
cmd /K consoleapp.exe
Run Code Online (Sandbox Code Playgroud)
错误的方法
请勿使用以下任何方法来实现此目的:
system("PAUSE");
Run Code Online (Sandbox Code Playgroud)
这将通过在程序中生成新的cmd.exe/command.com进程来执行windows命令'pause'.由于pause命令是特定于窗口的,因此这是完全不必要的并且也是不可移植的.不幸的是,我已经看过很多了.
getch();
Run Code Online (Sandbox Code Playgroud)
这不是C/C++标准库的一部分.它只是一个编译器扩展,一些编译器不支持它.
小智 8
如果您的问题是在Visual Studio中保留控制台窗口而不修改您的应用程序(c代码)并使用Ctrl + F5运行它(当运行Ctrl + F5时)但窗口仍然关闭,则主要提示是设置/ SUBSYSTEM :Visual Studio项目中的CONSOLE链接器选项.
正如DJMooreTX在http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/21073093-516c-49d2-81c7-d960f6dc2ac6中所解释
1)打开项目,然后转到解决方案资源管理器.如果您在K&R跟随我,您的"解决方案"将是"hello",其中包含1个项目,也是"hello"的粗体.
右键单击"hello"(或任何项目名称).
从上下文菜单中选择"属性".
选择"配置属性>链接器>系统".
对于右侧窗格中的"子系统"属性,请单击右侧列中的下拉框.
选择"控制台(/ SUBSYSTEM:CONSOLE)"
单击"应用",等待它完成所做的任何操作,然后单击"确定".(如果"Apply"显示为灰色,请选择其他子系统选项,单击Apply,然后返回并应用控制台选项.我的经验是OK本身不起作用.)
现在做Boris的CTRL-F5,等待你的程序编译和链接,找到桌面上所有其他垃圾下的控制台窗口,然后阅读程序的输出,然后是心爱的"按任意键继续...... "提示.
同样,CTRL-F5和子系统提示一起工作; 它们不是单独的选择.
| 归档时间: |
|
| 查看次数: |
114527 次 |
| 最近记录: |