2013-04-07 57 views
0

我寫了一些代碼將任何字符串轉換爲莫爾斯電碼。代碼工作完美,直到我嘗試自動重複它。自動重複代碼

無論我使用「while」還是「do while」,代碼只運行一次,然後終止。 你能幫忙找出問題所在嗎?

int main() 
{ 
    cout<<"Enter the string: "; 
    char myStr[81]; 
    char ch='y'; 

    while (ch=='Y'||ch=='y') 
    { 
     getString(myStr); 
     toUpper(myStr,strlen(myStr)); 
     removeSpace(myStr); 
     getMorse(myStr,strlen(myStr)); 
     cout<<"to repeat press Y/y"; 
     cin>>ch; 
    } 
    return 0; 
} 

用戶進入輸入後,我加入的getString()函數

void getString(char myStr[]) 
{ 
    cin.getline(myStr,81,'\n'); 
} 
+1

你有沒有真正嘗試調試和單步執行代碼和/或打印出中間值? – 2013-04-07 05:57:58

+2

可能存在剩餘輸入,但您可能會注意到它在循環結束時跳過輸入語句。 – chris 2013-04-07 05:58:07

+2

需要查看'getString'的代碼,正如chris所說,可能會遺留輸入。 – john 2013-04-07 05:59:43

回答

1

,它們按Enter鍵。該換行符'\n'仍在cin流中。你需要ignore它:

cin >> ch; 
cin.ignore(numeric_limits<streamsize>::max(), '\n'); //this ignores all subsequent characters until the newline character 
+1

我知道你應該在調用ignore之前清除它,即'cin.clear()' – 2013-04-07 14:13:38