输入名称时,while循环退出太早

时间:2019-04-03 21:37:58

标签: c++

我正在学习C ++,并且试图创建一个while循环供用户输入其名称。输入他们的名字后,我正在使用while循环检查输入的名字是否为真实的为此使用字符串。如果用户没有输入名称,则说他们输入了一个值,然后while循环将提示用户再次输入名称。同样,如果名称输入正确,则再次在底部打印名称以与用户确认。

#include <iostream>
#include <string>
using namespace std;
// g++ -std=c++14 -Wall main.cc -o main

int main() {

  string name;
  cout << "Please Enter Your Name: " << endl;


  while (name.compare ("Done") != 0) {
    getline(cin,name);
    if (name == " ") {
      cin.clear();
      cout << "\nPlease Enter Your Name: " << endl;
    } else break;
  }

  return 0;

  cout << "Is Your Name" << name << "?" << endl;
  // Ask Verification Here
}

2 个答案:

答案 0 :(得分:1)

Break导致循环结束。您要么是continue,要么根本不需要休息。

答案 1 :(得分:1)

我对代码更清晰的建议:

  1. 移动所有用于检查名称对其功能是否有效的逻辑。

    bool isValidName(std::string const& name)
    {
       // Do all the validation tests and return true if name is valid.
       // Return false otherwise.
    }
    
  2. while循环更改为:

    while ( getline(cin,name) )
    {
       if ( name == "Done" )
       {
          break;
       }
    
       if ( isValidName(name) )
       {
          break;
       }
    
       // Ask for name again.
       cout << "\nPlease Enter Your Name: " << endl;
    }