C ++ If / Else循环问题

时间:2016-12-10 21:48:23

标签: c++ if-statement

检查用户输入。如果输入的输入不正确,则循环正常。如果输入了正确的输入,则再次输入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;
    }
  }
}

2 个答案:

答案 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语句。