所以我一直在研究從書PPP由Bjarne Stroustrup的編程和有以下分配:程序似乎忽略第二輸入線
- 寫一個程序,你首先輸入一組名稱·和·值對, 如Joe 17和Barbara 22.對於每一對,將名稱添加到一個稱爲名稱的向量 中,並將該數字添加到稱爲分數的向量中(在相應的 位置上,以便如果名字[7] ==「喬」則得分[7] == 18)。終止 輸入行不再有(「更多」將嘗試讀取另一個 整數失敗)。檢查每個名稱是否唯一,如果名稱輸入兩次,則以錯誤 消息結束。寫出所有(名稱,分數)對,每行一個 。
- 修改練習19中的程序,這樣當你輸入一個名字 時,程序將輸出相應的分數或「找不到名字」。
修改練習19中的程序,這樣當你輸入一個整數時,程序將輸出帶有該分數或「找不到分數」的所有名字。 所以這是我寫的代碼:
using namespace std; int main() { vector <string> names; string name; vector <int> scores; int score; string finish = "no more"; cout << "Please write a player's name and the player's score: \n"; while (name != "|") { cin >> name; cin >> score; names.push_back(name); scores.push_back(score); cin.ignore(); } for (size_t j = 0; j < scores.size(); j++) { for (size_t p = 0; p < scores.size(); p++) { if (names[j] == names[p] && j != p) { cout << "Error! You have reiterated the name: " << names[j] << "\n"; system("pause"); return 1; } } } cout << "Please insert a name to see it's score:\n"; string s = " "; cin >> s; for (size_t d = 0; d < scores.size(); d++) { if (s == names[d]) { cout << names[d] << "'s score is: " << scores[d] << "\n"; } } system("pause"); }
現在我的問題很簡單,我相信。在第二個cin(cin >> s)編譯器似乎跳過這一行並終止程序,而不是讓我寫輸入。我在網上看到,這是因爲你不能使用cin兩次,所以當我添加行cin.ignore()
,希望問題會解決,它並沒有幫助解決問題。有關如何解決此問題的任何提示?
這不是編譯器忽略行,而是程序。標題因此具有誤導性。 – riodoro1
@ riodoro1注意到並修復:) –
你的名字裏有空格嗎? – NathanOliver