2015-09-25 30 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){