cin是否在输入流中使用空字符?

时间:2018-02-12 03:48:32

标签: c++ stream cin

我不确定std::cin实际上如何从流中获取输入。

例如,我的代码:

#include <iostream>

int main()
{
    std::cout<<"Pick 1 or 2: ";
    int choice;
    std::cin>>choice;

    //std::cin.ignore(32767,'\n');

    std::cout<<"Now enter your name: ";
    std::string name;
    std::getline(std::cin,name);

    std::cout<<"Hello, "<<name<<", you picked "<<choice <<'\n';
    return 0;
}

当我注释掉std :: cin.ignore时,控制台会打印“Pick 1 or 2:”,我输入1并跳过等待我输入我的名字。相反,我看到“你好,你选了1个选择”。

实际上,cin甚至会在流中取空字符,我想知道吗?

1 个答案:

答案 0 :(得分:0)

当您使用cin输入内容并按Enter键时,&#39; \ n&#39; char进入cin缓冲区。因此,要清除此缓冲区,您可以使用std::cin.ignore(32767,'\n'),这应该清除缓冲区中所需的字符串。