2012 Express版VS中的C++控制台?

3

我对编程完全不熟悉,请多多关照。

之前我一直在使用Eclipse作为C/C++的开发工具,但是它看起来很不稳定,所以有人建议我转用Visual Studio Express。现在我正在尝试一个简单的“Hello World”程序。

#include <iostream>
#include <string>
using namespace std;

int main( int argc, char ** argv )
{
    string response;
    cout << "Gimme a string: " << flush;
    cin >> response;
    cout << "The string is: " << response << endl;
    system("pause");
    return 0;
}

这里出错的地方不多。

无论如何,我注意到没有像Eclipse一样的“控制台”。所有文本都会在一个小的命令提示窗口中弹出。而且,如果没有其他事情要做(比如cin),这个窗口在显示新文本后就会立即关闭。有人告诉我可以使用system("pause"),但肯定有更好的方法。在Eclipse中,文本不会突然消失,因为控制台窗口没有关闭。

我知道这个问题可能有点困惑,请评论说明我在说什么。或者将代码复制到您的Visual Studio 2012 Express Edition中。

但是,是否有一种方法可以在“控制台”中显示我的所有文本和内容,而不是在命令提示窗口中;为什么它总是在我读完最后一件事之前关闭?


1
您也可以自己打开控制台(cmd),并导航到您正在工作的路径。这个控制台不会在程序终止后关闭。 - user1810087
我通常只在“main”函数中的“return”语句上设置断点。否则你也无能为力,这就是Windows的工作方式,而VS并没有什么办法来解决这个问题。 - Mark Ransom
我曾经使用过旧版的Visual Studio,它们默认是暂停的,但是不确定是哪个版本,可能是在2008年左右,控制台消失了,不知道我们得到了什么输出,所以我尝试使用system("pause");或者有时候调用getchar()函数等待按键继续。 - aah134
4个回答

2
  1. 右击您的项目名称,
  2. 进入属性页面
  3. 展开“配置属性” -> “链接器” -> “系统”
  4. 在“子系统”下拉菜单中选择“控制台”(/ SUBSYSTEM:CONSOLE)

按照阿卜杜勒的建议设置后,注意使用Ctrl+F5会等待按键输入才能关闭窗口,但它将在没有调试的情况下运行。使用上述设置,您应该能够在几乎所有版本的VStudios(从2008年到2012年)中可视化控制台。 - notNullGothik
@notNullGothik 抱歉,那有点令人困惑。如果您使用Ctrl-F5,则只会运行程序,而不是进行调试?如果这就是您的意思,那么是否有一种方法可以在功能区上放置一个“运行”按钮,以便您可以单击它而不是“调试”按钮? - Live2Code
@abdul 我已经这样做了,但好像没有什么区别。控制台应该出现在哪里? - Live2Code
@notNullGothik 我试了你的想法,它起作用了!非常感谢!我猜你得手动按下“x”来关闭它。或者可能是Alt-F4或其他什么。 - Live2Code
1
@Live2Code,很高兴它起作用了,评论中有一个小错误(说Crtl+F5会等待一个键),不管怎样,我不明白adbul写的指令为什么不起作用,它应该可以!(不要忘记给有用的评论点赞) - notNullGothik
@Live2Code 控制台窗口将等待按键,可以是x或您喜欢的任何键。 Alt-F4 也可以使用,但这应该是由于操作系统的快捷方式(我不确定),与 VStudio 的设置无关。 - notNullGothik

0

你所描述的行为是Visual Studio的默认行为,老实说我一直觉得有点奇怪。在调试模式下,如果我想让窗口停留并查看发生了什么,我会在程序末尾的返回行添加断点。否则,我会直接从命令提示符中运行发布程序,这不是问题。我从未找到过将行为更改为停靠面板的方法,这是我更喜欢的方式 - 也许其他人知道如何做?


0
在Visual Studio中,有一个输出到调试控制台的函数:OutputDebugStringA
我还没有在Express版本中尝试过它。

0

尝试使用OutputDebugString方法。我建议您制作自己的包装类,该类使用OutputDebugStream作为其源但类似于stdio。这很麻烦,我不确定为什么Visual Studio不能帮助实现标准I/O到控制台功能。可能已经有一些开源项目为您完成了此操作。简要搜索后,我找到了这个


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接