我在C++中創建了一個簡單的控制檯應用程序,該應用程序從用戶處獲取字符串和字符輸入。爲了簡單起見,我想使用字符串和char數據類型將輸入從cin傳遞給。C++ iostream:使用cin >> var和getline(cin,var)輸入錯誤
要獲得字符串輸入,我使用的是函數getline方法:
string var;
cin.ignore(); //I used ignore() because it prevents skipping a line after using cin >> var
getline(cin, var);
要獲得字符輸入,我使用的是CIN >> VAR方法:
char var;
cin >> var;
這在大部分情況下工作正常。但是,當我使用getline輸入字符串時,它會忽略我的字符串的第一個字符。
是否有可能使用函數getline和CIN >>,而不必使用忽略的方法,或者我可以打電話,以確保我的第一個字符是不是跳過?
這是一個代碼全樣本,我同時使用函數getline和CIN >>:
string firstName;
string lastName;
char gender = 'A';
cout << "First Name: ";
cin.ignore();
getline(cin, firstName);
cout << "Last Name: ";
cin.ignore();
getline(cin, lastName);
while(genderChar != 'M' && genderChar != 'F')
{
cout << "Gender (M/F): ";
cin >> genderChar;
genderChar = toupper(genderChar);
}
我不明白你對cin.ignore()的評論。根據它的api定義,它將放棄你輸入的字符串的第一個字符,就像你現在遇到的場景一樣。 –
@JinChen抱歉,修正。我的意思是說,如果我不使用ignore(),它會跳過一行輸入。 – miguelarcilla
仍然很奇怪,cin.ignore()不應該像那樣行爲。你能提供更多的問題代碼嗎? –