我对cin的一些命令有疑问。我对c ++还很新,所以请耐心等待。
我正在做一个简单的计算程序,用户输入一个值,程序用输入进行计算。我试图创建一个检查输入的循环,以确保用户输入和编号。经过一些研究后,我发现使用cin.clear
和cin.ignore
将清除先前的输入,因此用户可以在循环检查后输入新值,以查看它是否不是数字。它运行良好,除非用户输入大于1个字母的单词。然后它循环并逐个删除每个字母,直到清除前一个cin。有没有办法删除整个单词而不是一次删除一个字符?我觉得我错误地解释了cin命令实际上做了什么。
以下是相关代码:
//Ask the user to input the base
cout << "Please enter the Base of the triangle" << endl;
cin >> base;
//A loop to ensure the user is entering a numarical value
while(!cin){
//Clear the previous cin input to prevent a looping error
cin.clear();
cin.ignore();
//Display command if input isn't a number
cout << "Not a number. Please enter the Base of the triangle" << endl;
cin >> base;
}
答案 0 :(得分:1)
我认为你可以在网上以多种方式得到答案。这对我有用:
#include <iostream>
#include <limits>
using namespace std;
int main() {
double a;
while (!(cin >> a)) {
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cout << "Wrong input, retry!" << endl;
}
cout << a;
}
此示例比注释中链接的示例更简单,因为您期望来自用户的输入,每行一个输入。