我正在编写一个将米转换为英尺的基本程序
// 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
),然后解析该行以获得输入数字。