在c++中处理I/O文件时误解了cin.unget()的用法
Misunderstood the usage of cin.unget() while handling I/O files C++
例如,我有一个名为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
。
相关文章:
- C++中的cin.ignore()函数不适用于整个流
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- Problems with std::cin.fail()
- 由cin中的字符串中未捕获空白引起的分割错误
- 在C++中使用Cin,我如何在1行中输入
- 将 cin 限制为只有一个
- cin >> int 给定一个字符串将 int 赋值为 0
- istream std::cin如何修改自定义istream缓冲区
- C++ 将 CIN 值存储到任何类型的数组中
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- cin 的十进制输入验证?
- Turbo C++ cin() 不能与 gets() 一起使用
- 使用 cin 时接受小数点后的 2 位数字
- 在 std::getline 和 std::cin 期间卡在循环中
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 为什么我的两个 cin 语句没有在程序结束时运行?
- C++ cin.ignore() 跳过循环
- CIN是逻辑1还是0?
- C++输入流.与 cin unget() 函数有点混淆
- 在c++中处理I/O文件时误解了cin.unget()的用法