在c++中处理I/O文件时误解了cin.unget()的用法

Misunderstood the usage of cin.unget() while handling I/O files C++

本文关键字:unget cin 用法 误解 处理 c++ 文件      更新时间:2023-10-16

例如,我有一个名为Bjarne.txt的文件,其中有整数:

16   2   3   4

我已经做了一个程序来读取文件内可用的整数,并在控制台窗口中将它们输出给我,然而,我试图使用cin.unget(),并通过了解它实际上做了什么,这是源代码:

#include <iostream>     
#include <fstream>      
using namespace std;
int main () {
ifstream ifs("Bjarne.txt");
int a;
for(int i = 0;i<4;++i){
   ifs>>a;
   cout<<endl<<a;
   if(i==0){
   ifs.unget();
   }
}

输出为:

16 6 2 3

为什么输出是这样的?(它应该是16 2 3 4),它只发生当我把if .unget()在程序中,所以我的问题是,什么是目的,而使用I/O文件,为什么是数字6(作为16的一部分)得到输出?

提前感谢您的帮助。

文档有问题吗?

使最近提取的字符再次可用。

在第一次循环迭代结束时,6是最后一个提取的字符(作为提取的格式化int的最后一个数字,其值为16)。

Unget正是这样做的:它un-获取它。

下一个操作有6要处理。所以,惊喜的是,下次你会得到6