c++ 读取文件遇到的一个问题
Posted wangli1392781
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 读取文件遇到的一个问题相关的知识,希望对你有一定的参考价值。
今天同学问到一个问题:
下面的代码 int len = fin.tellg();
放在一个函数里用了好几年都没问题,就是最近发现出问题了。
原因:文件过大 超过了2G 读出来的文件大小 超过int表示的最大值 int溢出
#include <stdio.h> #include <iostream> #include <fstream> #include <assert.h> using namespace std; int main() { int len = sizeof(unsigned int)*3 + sizeof(char); printf("len:%d\n", len); ifstream in("test.txt"); int len2 = in.tellg(); printf("%d", len2); return 0; }
文件test.txt 不存在 返回 -1 test.txt 文件为空 返回-1
解决:定义成streampos 或者len改为一个范围更大的类型 例如 unsigned long long之类
以上是关于c++ 读取文件遇到的一个问题的主要内容,如果未能解决你的问题,请参考以下文章