当我输入数字时,为什么程序结束?

时间:2011-12-18 00:28:04

标签: c++

我几天前开始使用C ++进行编程,这让我很烦恼:

每当我输入数字时,程序就会结束。

代码:

using namespace std;

int main()
{
    int entry;

    cout << "Write a number: ";
    cin >> entry;
    cout << entry;

    cin.get();
    return 0;
}

我需要一些帮助,所以我的程序可以正常运行。

右边我的意思是在结束后输出数字......但它只是在我输入数字后结束并按下输入它不打印它。

更新

为了那些不明白我的意思的人(对不起我的英语)

好的,让我解释一下。

- 所以程序可以从键盘右侧获取值。

- 我输入一个数字,假设是6,好现在我按回车。

- 现在该数字应该在屏幕上输出,但这不会发生,因为程序关闭得太快。

但实际上,通过在每次数据输入请求后添加第二个cin.get();或添加cin.ignore();来解决这个问题。

4 个答案:

答案 0 :(得分:1)

这是一个略微改进的版本,可能更接近你想要的

#include <string>
#include <sstream>
#include <iostream>

int main()
{
    int n;
    std::string line;

    while (true)
    {
        std::cout << "Please enter an integer: ";

        if (!(std::getline(std::cin, line))) { return 1; /* error! */ }

        std::istringstream iss(line);
        if (iss >> n) { break; }
    }

    std::cout << "Thank you. You said: " << n
              << "\n\nPlease press Enter to quit.";

    std::getline(std::cin, line);
}

在输入流关闭或以其他方式终止之前触发getline中的错误条件,然后才能读取另一行(例如,如果在控制台上按Ctrl-D)。在您输入有效整数之前,对n的标记提取失败,并且循环将继续循环,直到发生这种情况。

答案 1 :(得分:0)

get()从流中读取一个且只有一个字符,因此在您输入数字后程序结束是完全正常的。

查看std::basic_istream<>::getline()方法或更简单的std::getline(),不需要动态缓冲区。

如果您需要有关C ++中基本IO的更多信息,可以阅读以下文档:Basic Input/Output - C++

更新

如评论中所述,我很想念这个问题,我最初认为只有一个数字被读入变量。

再仔细阅读后,我无法理解问题所在。

答案 2 :(得分:0)

您需要做的就是使用读取整数后留下的换行符。

这也发生在java中。

using namespace std;

int main()
{
    int entry;

    cout << "Write a number: ";
    cin >> entry;
    cout << entry;

    cin.get(); //Consume newline

    cin.get();
    return 0;
}

答案 3 :(得分:-2)

原因是你正在使用

cin.get();
return 0;

在程序结束时,cin.get()读取您输入的数字,然后直接转到return 0;,从而结束程序。

要停止此操作,您可以在cin.get();之前添加额外的return 0; 或使用

system("Pause");

之前的return 0;