c++如何做到当输入不为换行或者空格时继续循环呢?

如题,之前我是学free pascal考NOIP的,现在从头学C++
fp是有我说的那种输入方式的,while not eoln 和 while not eof 这种语句来实现的,那么请问C++有没有类似的实现方式呢
我尝试用

{
    int n;
    char a;
    while (getchar()!='\n')
    {
        n=getchar();
    }
    cout<<n<

来实现,但是发现并不奏效
我输入单个字符再按回车的时候并不会结束循环,后来我发现我输入偶数个字符的时候再按回车会结束循环,但是奇数个不会,这又是为什么呢?
例如 我输入1,不会结束循环
但是我输入12 就会结束循环
输入123 不结束,输入1234 结束 以此类推
这是什么原理呢?
希望能被解答

while((n=getchar())!='\n')
你一次循环调用了两次getchar啦

while (1)
{
n=getchar();
if (n == '\n') break;
...
}

使用if语句和break就可以啦

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^