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

// 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()无法使控制台保持 Activity 状态?

最佳答案

当您输入像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),然后解析该行以获得输入数字。

09-11 17:21