2011-11-30 136 views
0
#include <iostream> 
#include <string> 
using namespace std; 

int main() { 
    string str; 
    int age; 
    cout << "Please enter age: "; 
    cin>>age; 
    cout << "Please enter full name: "; 
    getline (cin,str); 
    cout << "Thank you, " << str << ".\n"; 
} 

爲什麼函數getline()在我使用uperator >>輸入整數時不起作用? int輸入有什麼更好的用法?cin >>不能用getline()

+6

定義「不工作」。發生了什麼,你不喜歡? –

回答

5

cin>>age;後面的流中仍然有一個換行符,它給你一個空名稱字符串。

您可以通過在獲得年齡並丟棄結果後再添加另一個getline()來解決此問題。另一種選擇是撥打cin.ignore(BIG_NUMBER, '\n');,其中BIG_NUMBER是MAX_INT或其他。

+0

如何解決問題? – Wizard

+0

@ user1069874:我進行了編輯,使解決方案更加明顯。 –

+1

調用'getline()'兩次可以解決這個問題,但更有效的解決方案是在真正的getline()之前調用'cin.ignore()'。 – ildjarn

1

getline()將不適用於int或任何數字的事情。它被定義爲:

istream& getline (char* s, streamsize n); 

istream& getline (char* s, streamsize n, char delim); 

所以,它需要字符串和char*的;不是數字。

+1

'getline()'用於名稱,而不是整數。仔細看看這個問題。 –

+0

和數字也是字符:) –