gpt4 book ai didi

c++ - C++ 中的输入流。与 cin unget() 函数有点混淆

转载 作者:行者123 更新时间:2023-12-02 03:49:29 25 4
gpt4 key购买 nike

有人可以澄清我对 cin.unget() 函数的一点困惑吗?请考虑这段代码:

void skip_to_int()
{
if (cin.fail()) { // we found something that wasn’t an integer
cin.clear(); // we’d like to look at the characters
for (char ch; cin>>ch; ) { // throw away non-digits
if (isdigit(ch) || ch=="-") {
cin.unget(); // put the digit back,
// so that we can read the number
return;
}
}
}
error("no input"); // eof or bad: give up
}

如果 cin.unget() 将数字放回到输入流中以便再次读取,我不会得到 cin>>ch 相同的字符来检查条件for 再次,因此陷入无限循环?

最佳答案

让我们仔细看看skip_to_int

 if (cin.fail()) {

如果最后的输入错误

       cin.clear();

清除标志并寻找下一个好的数据

       for (char ch; cin>>ch; ) {

获取角色

            if (isdigit(ch) || ch=="-") {

如果字符是我们想要的字符

                 cin.unget();

将其放回流中

                 return;

退出该函数!!!

            }

否则循环返回以获取下一个字符

        }

没有更多字符,退出循环

  }

error("no input");

紧接着unget,函数返回,并与函数一起结束循环。

关于c++ - C++ 中的输入流。与 cin unget() 函数有点混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278037/

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