为什么当我尝试将char输入到int时,文件指针会卡住
Why does the file pointer stuck when I try to input char to int?
当我试图用c++从.txt文件中读取数据时,我遇到了一个奇怪的现象,当我的程序试图将char输入到int变量(例如a1(时,它会被困在While循环中。
我知道,如果我将int a1 = 0;
更改为char a1;
,下面代码的问题就可以解决。我的问题是,为什么文件指针会停在它遇到的第一个字符上?我想它只会把字符变成ASCII整数,或者简单地跳过它,就像它是一个制表符或空格一样。
下面是我用来测试这个的代码。
#include<iostream>
#include<fstream>
using namespace std;
int main(){
ifstream in;
int a1=0;
int a2=0,a3=0,a4=0;
in.open("input.txt");
while(!in.eof()){
in >> a1 >> a2 >> a3 >> a4;
cout << a1 << " "<< a2 << " "<< a3 << " "<< a4<<endl;
cout << SEEK_CUR <<endl;
}
return 0;
}
下面是"input.txt">
a 42 94 32
b 33 19 82
c 88 40 18
d 92 45 19
e 77 25 84
输出为
0 0 0 0
1
0 0 0 0
1
0 0 0 0
1
.
.
and so on
istream
中的操作是类型安全和类型敏感的。
operator>>
:
如果提取失败(例如,如果在需要数字的地方输入了一个字母(,则不修改值,并设置故障位。(直到C++11(
如果提取失败,则将0写入值,并设置故障位。如果提取导致值太大或太小而无法放入值,则写入std::numeric_limits:max((或std::numeric_limits::min((,并设置故障位标志。(自C++11起(
基本上,你无法读取任何数据,因此,你无法到达文件的末尾,这就是无限循环的原因。
相关文章:
- 为什么当我尝试将char输入到int时,文件指针会卡住
- fprintf 不打印到文件,当文件指针在其他地方声明时
- 如何从NTFS中的$ MFT文件访问文件的每个块的文件指针
- 尽管文件指针正确,但在fclose()期间的segfault
- 当调用FREAD()函数时,文件指针如何移动
- C++如何复制文件 * 指针
- 如何将文件描述符 (int fd) 转换为文件指针 ( 文件* fp )
- Visual Studio 2010 调用 _locking() 失败 (errno = 22) 当文件指针高于 (2^
- 如何在 c++ 中查找文件指针位置
- c++文件指针工作不正常
- 做一个popen(),将文件*指针放入fstream中,pclose()呢?
- 在Linux中,多个进程使用文件指针读取文件时使用的共享虚拟内存
- 无法声明文件指针数组
- 将文件指针重定向到C/C++中的字符串
- 如何检查文件指针/描述符/句柄是否关联到同一个文件/管道/终端
- 在记录中定位文件指针
- 流和文件指针移动
- 如何将文件指针移回一个整数
- C++ 如何使用文件指针以增量方式写入文件
- 为什么std::istream::read不根据读取的字节移动文件指针