检查用户输入。如果输入的输入不正确,则循环正常。如果输入了正确的输入,则再次输入2以便进行注册。帮助
int deposit;
cout << "How much do you want to deposit?" << endl;
cin >> deposit;
if (!(cin >> deposit)) { // If the input is not equal to the data type of
// deposit
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Invalid Input" << endl;
} else {
while (infile >> u >> p >> b) {
if (checkUser == u) {
int newBalance;
cout << "Your amount of $" << deposit << " has been added to your account"
<< endl;
int fileBalance;
stringstream convert(b); // object from the class stringstream
convert >> fileBalance; // the objects has the value of B and
newBalance = fileBalance + deposit;
outfile << checkUser << ' ' << checkPass << ' ' << newBalance << endl;
} else {
outfile << u << ' ' << p << ' ' << b << endl;
}
}
}
答案 0 :(得分:1)
您输入两次输入是因为您至少经历了cin>>deposit
两次:
cout << "How much do you want to deposit?" << endl;
cin >> deposit;
if (!(cin >> deposit)) {
摆脱第一个cin
:
cout << "How much do you want to deposit?" << endl;
if (!(cin >> deposit)) {
另外,请查看使用代码编辑器或IDE设置clang-format
。它使您的代码看起来很好,没有努力,将帮助您发现错误。此处还有在线版本:http://format.krzaq.cc/
答案 1 :(得分:0)
因为这里:
如果((CIN&GT;!&GT;存款))
您正在重新阅读标准输入。当您第一次执行cin>>deposit
时,您已经将值存储在变量中,因此您只需检查deposit
变量,或者您要对插入的数据执行的任何操作。
另一种更干净的方法就是避免使用第一个cin>>deposit
语句。