在c ++程序中,按Enter后,“ cin”将提供所有变量

问题描述 投票:-2回答:1

我有一个接受两个数字并将其显示在屏幕上的程序。

但是,当我输入第一个数字后按“ enter”时,程序将显示答案,然后再让我输入第二个数字。

为什么会这样?

int main()
{
    int n1;
    float n2;

    cin>>n1;

    cin>>n2;

    cout<<"int n:"<<n1<<endl<<"float n:"<<n2;

    return 0;
}

当两个变量都为int时有效。

c++ input cin
1个回答
1
投票

cin>>n1; cin>>n2;cin >> n1 >>n2之间没有区别。 Enter键仅用作同步输入缓冲区和流缓冲区的信号。 cin不每行输入一次,它在有可用数据量时解析缓冲区。如果解析不完整,则等待。如果无法完成解析,它将停止并更改状态位。要继续解析,您将忽略或清除部分或全部缓冲区内容。

在第一行中输入了错误的内容,导致cin进入bad()状态。如果您通过远程终端运行程序,可能会出现边缘情况,例如,某些错误的字符可能会误入Windows换行生成的^ M会中断Linux上的cin流。如果您从保存在不同平台上的文件中输入内容,也是如此。在Windows上,行尾由#10和#13两个字符组成。在linux上,steam只希望#13作为新行和缓冲区刷新信号,#10是意外字符。

如果您在一行中输入两个数字并且都有效,则说明有换行问题

© www.soinside.com 2019 - 2024. All rights reserved.