放置cin.get后关闭c ++控制台

时间:2014-01-02 12:12:49

标签: c++ cin

我正在编写一个将米转换为英尺的基本程序

// TestApp.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
# include <iostream>


int main()
{
    using namespace std;

    double feet;
    short int input;
    const double feettometer = 3.28 ; (changed after second comment, small mistake)

    cout << "Enter meter value: ";
    cin >> input;

    feet = feettometer * input ;

    cout << "your meter value of " << input << " in feet is " << feet ;
    cin.get();

    return 0;
}

为什么这个con.get()没有让控制台保持活着?

2 个答案:

答案 0 :(得分:9)

当您键入123之类的数字并按Enter键时,输入流中会显示123\n。当您摘录到input时,会移除123并在流中保留\n。然后,当您致电cin.get()时,会提取此\n。它不需要等待任何输入,因为此字符已经在那里等待提取。

因此,一个解决方案是在执行ignore之前使用get清除输入流:

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

这将提取并丢弃任何内容,包括流中的下一个\n。因此,如果您的输入为123hello\n,则会丢弃hello

另一种方法是使用std::getline读取输入行(也将提取\n),然后解析输入数字的行。

答案 1 :(得分:-1)

因为,它读取最后一个字符,写两次,坏解决方案如此:

  

cin.get();

     

cin.get();

或者只是尝试

  

系统( “暂停”);

将释放您的屏幕