所以我遇到了以下問題。我的目標是創建一個循環,不斷輸入用戶輸入,直到用戶沒有向'cin >>'輸入任何內容,將行保留爲空,並且只需按下ENTER鍵即可繼續,此時程序應該打破循環,繼續執行其餘的程序。事情是這樣的:保持循環,直到用戶輸入空白行?
do {
cout << "\nEnter a name: ";
cin >> input1;
if (input1.empty())
{
break;
}
else
{
user_name = input1;
}
} while (!input1.empty());
正如你所看到的,我已經用空()函數嘗試過,但沒有奏效,程序則只是停留在循環,並沒有打出去,沒有問題我按了多少次輸入。它只是不斷提示我輸入一個名字。我也試過使用類似
if (input1 == "")
但這也不工作。誰能幫忙?我如何擺脫這個循環?
更新:好吧,我試過你的建議,它的工作!非常感謝!不幸的是,雖然getline函數有效,但它也爲我創造了一個新問題。基本上,在第一個初始循環中,程序提示輸入名稱,輸入名稱,名稱存儲在user_name中。然而,在SECOND循環中,程序甚至沒有給我輸入任何輸入的機會,它只是輸出「Enter a name:」,然後立即退出循環,並繼續執行其餘的程序執行。這是爲什麼發生?
input1有什麼類型?的std :: string? –
你是否在每個if語句之後刷新/清除input1?如果您在第一次運行中直接按Enter,會發生什麼情況? –