cin.get() 没有正常工作

cin.get() isn't working as it should

本文关键字:常工作 工作 get cin      更新时间:2023-10-16

首先,这是代码:

using namespace std;
cout << "aOperation "HyperHype" is now activated!n";
cout << "Enter your agent code:_______bbbbbbb";
long code;
cin >> code;
cin.get();
cout << "aYou entered " << code << ".....n";
cout << "aCode verified! Proceed with Plan Z3!n";
cin.get();
return 0;

它的编译没有问题,运行几乎没有缺陷;在"code"从标准输入接收到其值后,最终的字符串闪烁了一毫秒,程序就死了。 如您所见,我将"cin.get()"成员函数放在最后一个字符串之后以防止这种情况,但它在"cin>>代码"行之后继续死亡。

到目前为止,这种方法对我所有其他练习程序都有效,并且该程序与其他任何程序在结构上都没有区别。

有什么建议吗?

(假设正确的头文件和预处理器指令已到位。

您正在阅读之前在最后get()调用中输入的换行符。在等待其他输入之前,您可能希望忽略第一个换行符之前的所有字符:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');
std::cin.get();

您可以将其缩短为

std::cin >> std::ws;

如果可以,需要输入非空格字符才能终止程序:std::ws操纵器提取空格字符,直到到达非空格字符或流的末尾。

请注意,std::istream::get()实际上确实正常工作!它只读取下一个字符。它只是碰巧没有做你所期望的。

添加一个 cin>>代码行,而不是两个 cin.get()。如果程序无论如何都关闭了,那么这可能是最简单的事情。