我正在使用这个程序来实现单字母密码。我遇到的问题是,当我输入纯文本时,如果满足条件即按下回车键,它不会跳出循环。这是我的代码。
int main()
{
system("cls");
cout << "Enter the plain text you want to encrypt";
k = 0;
while(1)
{
ch = getche();
if(ch == '\n')
{
break; // here is the problem program not getting out of the loop
}
for(i = 0; i < 26; i++)
{
if(arr[i] == ch)
{
ch = key[i];
}
}
string[k] = ch;
k++;
}
for(i = 0;i < k; i++)
{
cout << string[i];
}
getch();
return 0;
}
最佳答案
这里的问题可能是 getche()
(与 getchar()
不同)在输入的字符多于一个时只返回第一个字符windows(否则你不会使用 cls
)然后 EOL 使用 \r\n
编码。
发生的事情是 getche()
返回 \r
所以你的 break 永远不会真正执行。您应该将其更改为 getchar()
,因为 getche 是一个非标准函数。
你甚至可以尝试在你的情况下寻找 \r
而不是 \n
但我猜 \n
会保留在如果您稍后需要获取任何其他输入(不确定),缓冲区会导致问题。
关于c++ - 不脱离循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499915/