自动重复代码
问题描述:
我写了一些代码将任何字符串转换为莫尔斯电码。代码工作完美,直到我尝试自动重复它。自动重复代码
无论我使用“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');
}
答
,它们按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
你有没有真正尝试调试和单步执行代码和/或打印出中间值? – 2013-04-07 05:57:58
可能存在剩余输入,但您可能会注意到它在循环结束时跳过输入语句。 – chris 2013-04-07 05:58:07
需要查看'getString'的代码,正如chris所说,可能会遗留输入。 – john 2013-04-07 05:59:43