c++ - 不脱离循环

标签 c++ loops

我正在使用这个程序来实现单字母密码。我遇到的问题是,当我输入纯文本时,如果满足条件即按下回车键,它不会跳出循环。这是我的代码。

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/

相关文章:

c++ - 嵌套的 if-else 语句只执行一个条件 (C++)

java - 第二次进入循环时跳过 do...while 循环中的第一行代码 - Java

c++ - Visual Studio C++ 性能与英特尔 C++ 编译器 15

c++ DirectX 11 源代码样本/示例?

c++ - 用其他语言编写的函数是否受关于 UB 的 C++ 规则的约束?

c++ - 在 C++ 中从 C dll 生成对象

c# - 用 C++ 高精度测量时间

r - 累积和直到达到最大值,然后在下一行从零开始重复

javascript - 我需要在 Jquery 中从 'active' 项目开始循环

javascript - 根据某个值进行 x 次计算