c++ 讀取文件遇到的一個問題
阿新 • • 發佈:2017-09-20
問題 ostream fstream 最大值 最大 同學 讀取文件 一個 fst
今天同學問到一個問題:
下面的代碼 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++ 讀取文件遇到的一個問題