我製作了一臺「電腦」。我conctructor看起來是這樣的:會員功能不會執行其整個代碼
PC::PC()
{
cout << "Would you like to turn the pc on? type y for yes." << endl;
a = getchar();
while (a != 'y')
{
cout << "If you dont turn it on, then nothing will happen. Loser." << endl;
a = getchar();
}
}
然後,如果你按y鍵,你將被髮送到下一個步驟是函數PC :: PCON看起來像這樣:
void PC::pcOn()
{
for (auto i = 0; i < 3; i++)
{
cout << "----------------------------------------" << endl;
}
cout << "--------- What is your name? -----------" << endl;
changeName();
for (auto i = 0; i < 3; i++)
{
cout << "----------------------------------------" << endl;
}
for (auto i = 0; i < 5; i++)
{
cout << "**" << endl;
Sleep(100);
}
cout << "Welcome " << name << " to the future of computing." << endl << endl;
cout << "This computer program can do a lot of things for you" << endl << "it is a good calculator, try to type \"calculater\"" << endl;
}
但是當我有在構造函數中的while循環來獲取y,changeName();不會工作,但如果我刪除,changeName函數工作得很好,它需要我的輸入就好了。
的changeName()的代碼看起來是這樣的:
void PC::changeName()
{
string _name;
getline(cin, _name);
name = _name;
}
我已經使用Visual Studio的調試器,看看爲什麼我不會正確地調用它嘗試過,但可惜沒有希望。 奇怪的是,如果構造函數中的while循環不存在,該函數可以正常工作。
可能的複製來完成:爲什麼標準::函數getline()格式化提取後跳過輸入?](HTTP: //stackoverflow.com/questions/21567291/why-does-stdgetline-skip-input-after-a-formatted-extraction) – NathanOliver