自动重复代码

问题描述:

我写了一些代码将任何字符串转换为莫尔斯电码。代码工作完美,直到我尝试自动重复它。自动重复代码

无论我使用“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

,它们按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