3

我对编程很陌生,所以要友善。

我在 C/C++ 开发人员中使用 Eclipse 有一段时间了,但它似乎有很多问题,所以我被建议切换到 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 中。

但是有没有办法在“控制台”中显示我的所有文本和任何内容,而不是命令提示符类型的窗口?为什么它总是在我读完最后一件事之前关闭?

4

4 回答 4

2
  1. 右键单击您的项目名称,
  2. 转到属性页面
  3. 展开配置属性 -> 链接器 -> 系统
  4. 在子系统下拉列表中选择控制台 (/SUBSYSTEM:CONSOLE)
于 2013-06-27T16:20:43.283 回答
0

The behaviour you describe is how Visual Studio works by default, and to be honest I have always found it a little strange. In debug mode I add a break point to the return line at the end of my program if I want the window to hang around and see what happened. Else I would be running my release program from a command prompt directly so it isn't a problem. I've never found a way to change the behaviour to a docked panel which I what I would prefer - maybe someone else knows?

于 2013-06-27T16:15:34.903 回答
0

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

于 2013-06-27T16:31:05.983 回答
0

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

于 2013-06-27T16:18:47.933 回答