无法读取程序输出

时间:2011-05-19 21:29:50

标签: c++

所以我今天正在学习C ++,而且我遇到了一个我似乎无法解决的问题。当我编写程序以从用户输入信息时,程序在用户输入信息之后立即关闭并且不显示输入的信息。

例如,这是代码:

#include <iostream>
#include <string>

using namespace std;

int main() {
    //Declar vairables
    char letter = 'A';
    int integer = 0;
    float dec = 0.0f;

    cout << "Enter a letter: ";
    cin >> letter;

    cout << "Enter an integer: ";
    cin >> integer;

    cout << "Enter a float number: ";
    cin >> dec;

    cout << endl;

    //Output what user entered
    cout << "letter: " << letter << endl;
    cout << "integer: " << integer << endl;
    cout << "float number: " << dec << endl;
}

现在,当我运行它时,控制台会要求我:

  1. 输入一封信
  2. 输入整数
  3. 输入一个浮点数
  4. 在此之后,程序立即关闭而不显示此段代码应该执行的输出:

    //Output what user entered
    cout << "letter: " << letter << endl;
    cout << "integer: " << integer << endl;
    cout << "float number: " << dec << endl; }
    

    这让我摸不着头脑,因为没有编译错误,代码被eInstitute Publishing直接从 C ++ Programming for Games 中删除。

7 个答案:

答案 0 :(得分:7)

您的计划正在退出。由于命令行是通过执行进程打开的,所以当进程退出时它会关闭。您可以在主要功能的末尾添加对cin的呼叫,以便暂停直到按下输入,例如:

cout << "Press any key to close the program";
char c;
cin >> c;

答案 1 :(得分:2)

这是在调试模式下运行程序时经常发生的情况。您的程序执行最终的 couts 并打印它们,然后立即跳转到 return 0; 语句。您必须要求输入作为最终操作,以防止程序立即关闭。

为避免这种情况,您可以在程序结束时添加:

char c;
std::cin>>c;

这将模拟暂停。

如果你在Windows上,你也可以调用 system(“PAUSE”); 虽然这不是跨平台的。

答案 2 :(得分:0)

您可能直接从IDE运行它,这就是它发生的原因。在程序结束时有另一个输入语句,这将强制程序暂停,你会看到屏幕。

答案 3 :(得分:0)

我可以更好地指出问题,如果说的代码是有问题的,但我认为问题是你试图用visual studio进行编译,你想要调试你的项目(你按f5)我想如果你按ctrl + f5可以解决问题,(它使程序在没有调试的情况下运行,并且等待一个键直到程序完成),另一种方法是在你的程序结束时添加另一个cin程序,这样你就可以看到在控制台关闭之前写的是什么。

答案 4 :(得分:0)

嗯,好像这最终变得有点过时了 - 在Windows上,在Linux上肯定还是很受欢迎,我肯定会推荐它:只要你的程序没有任何GUI,就可以从一个永久开放的终端窗口!这有几个好处,能够在终止后读取程序输出就是其中之一。

答案 5 :(得分:-1)

嗯,尝试插入

#include<stdlib.h>
你的指令中的

System.("Pause");

在你的程序的最后。它立即关闭只是因为它崩溃,给你“发送错误”窗口,或者它只是简单地完成并且程序完成。虽然Ed是正确的,但另一个cin调用也可以解决这个问题。

答案 6 :(得分:-2)

事情是,在向控制台显示您的行之后,所有应用程序都会退出。您可以通过以下方式恢复此操作:在代码的其余部分下方添加额外的命令行,例如:

int main() {
    // ...your code
    char buffer[100];
    cin>>buffer;
}

另一种更好的方法是使用system API并调用pause(如果你在windows上运行它)。请查看here以了解有关API的更多信息。

#include <stdio.h>
#include <stdlib.h>
// your includes, NO DUPLICATES!

int main() {
    // ...your code
    system("pause");
}