我正在编写一个将米转换为英尺的基本程序
// 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()没有让控制台保持活着?
答案 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();
或者只是尝试
系统( “暂停”);
将释放您的屏幕