2012-11-21 111 views
0

我使用遇到問題調用函數getline(CIN,STR)在while循環

getline(cin , inputStr); // where string = inputStr; 

採取從字符串類型的用戶輸入。代碼工作正常。但現在不知何故,在一個while循環中,它不被調用。也就是說,編譯器似乎跳過了這部分。

cin >> str單獨工作正常。有什麼建議麼?從評論


代碼:

int num, choice; 
string inputStr=""; 
while(1) 
{ 
    cout<<"1) Search \n"; 
    cout<<" EXIT\n"; 
    cout<<"Choose your choice : "; 
    cin >> choice; 
    switch(choice) 
    { 
    case 1: 
     cout<<"word for search\n"; 
     getline(cin, str); 
     cout<< str <<endl; 
     return 0; 
     //just checking whether this commands work or not. 
    } 
    else 
    { 
     return 0; 
    } 
    .......// there is 300 lines of code still there 
+1

是代碼'confidential'..you需要向我們展示你正在使用 – Anirudha

+0

的代碼我很抱歉,我不能。 但是是否有任何其他命令取的字符串作爲來自用戶的輸入???? – Terrenium

+0

你怎麼知道編譯器跳過那部分? – nairdaen

回答

3

的問題是,cin >> choice;離開輸入流中的換行符所以getline(cin, str);由於該換行立即返回。

嘗試在cin >> choice;之後添加cin.ignore();消耗換行符。

+0

它工作.....感謝loooooottttttttt ....... !!!! – Terrenium