gpt4 book ai didi

c++ - Cin.Ignore() 不工作

转载 作者:行者123 更新时间:2023-11-30 00:39:05 27 4
gpt4 key购买 nike

我这里有一个代码:

cout << "Press Enter To Exit...";
cin.ignore();

此程序将执行并等待您按回车键然后退出。现在看到这段代码:

int m;
cin >> m;
cout << "Press Enter To Exit...";
cin.ignore();

这次在“m”中输入一个数字保存后程序将退出而不等待 cin.ignore 命令等待按下 enter。

我的意思是如果你在 cin.ignore 之前使用 cin 命令,cin.ignore 命令将被跳过。为什么?我应该怎么做才能修复它?

最佳答案

cin.ignore()基本上清除内存中留下的任何输入。在第一段代码中,您没有输入任何内容,因此它不会清除任何内容,因此它会等待您输入内容。在第二段代码中,您使用了 >>获取格式化输入但保留结束行字符的运算符 '\n' (按 ENTER 时存储的那个)在输入缓冲区中徘徊。当您调用 cin.ignore() 时,它会完成工作并清除同一个缓冲区。因为它已经完成了他被调用的操作,所以它只是让程序继续(在本例中为结束)。记住cin.ignore()如果您希望用户在程序运行之前输入某些内容,则用于清除输入缓冲区(保存输入的小块内存)cin.get() .

你还应该知道:

如果使用:

-> cin<<你应该在之后调用 cin.ignore() 因为它不会消耗结束行字符 '\n' 下次你要求输入时会消耗它导致不需要的结果比如程序不等你输入任何东西。

-> cin.get()你不应该调用 cin.ignore() 因为它消耗了 '\n'

-> getline(cin,yourstring) (获取包括结束行字符在内的整个输入行)你也不应该使用 cin.ignore()

关于c++ - Cin.Ignore() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9349575/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com