2015-09-25 59 views
0

我有一些代码: 我希望在一个ID,确保它是8字符的长度,确保每个数字是一个数字,并继续询问,直到他们给出正确的输入。在某人的标记之前,我研究并试图查看给出的答案:c 我不明白为什么它说我输入的id 00000002是根据我的代码的无效ID。它不工作。谁能帮忙?我在哪里出错我的错误数据验证C++

void Student::getData(){ 
    string id_; 

    cout << "lastName?" << endl; 
    cin >> lastName; 

    cout << "firstName?" << endl; 
    cin >> firstName; 

    cout << "ID?" << endl; 
    while(getline(cin,id_) && id_.size() != 8){ 
    cout << "Invalid ID" << endl; 
    } 
+2

您是否添加了cout来查看'id_'的实际大小是多少?这将有助于您进一步调试。 – scrappedcola

+0

建议投入一些时间学习使用IDE附带的调试器。它会向你显示几乎立即发生的事情。它不会告诉你为什么,但会让你更容易找到答案。这是一个问题,每周要问几次。我们可能需要一个“为什么getline失败?”伪问题更容易搜索。 – user4581301

回答

2
while(getline(cin,id_) && id_.size() != 8){ 

这里getline()只是获取新行从输入的前行遗留下来的。添加一行以忽略该行的其余部分。

cin.ingore(std::numeric_limits<std::streamsize>::max(), '\n'); 
while(getline(cin,id_) && id_.size() != 8){