21xrx.com
2025-03-29 21:21:30 Saturday
文章检索 我的文章 写文章
C++中使用ifstream读取文件大小,tellg返回值为0
2023-07-05 09:56:48 深夜i     28     0
C++ ifstream 文件大小 tellg 返回值

在C++中,我们可以使用ifstream来读取文件。其中,利用tellg函数可以返回文件光标的位置,从而可以确定文件的大小。但是,有些情况下tellg函数返回值为0,这是否意味着文件大小为0呢?

其实,并不是这样的情况。如果tellg返回值为0,有可能是由于文件读取失败或者文件未打开导致的。因此,我们需要在使用tellg函数前先判断文件是否打开成功。可以使用is_open函数来判断。例如:

#include <iostream>
#include <fstream>
using namespace std;
int main(){
  ifstream infile("test.txt");
  if(infile.is_open()){
    infile.seekg(0, ios::end);  //将读取光标移动到文件末尾
    int filesize = infile.tellg();  //返回的文件大小
    cout << "filesize: " << filesize << endl;
  }else
    cout << "File open failed." << endl;
  
  infile.close();
  return 0;
}

在上面的代码中,我们首先使用is_open函数来判断文件是否打开成功。如果打开成功,我们使用seekg函数将读取光标移动到文件末尾,然后使用tellg函数来返回文件大小。而如果文件打开失败,则输出“File open failed.”。

因此,我们在使用tellg函数时需要注意判断文件是否打开成功,否则可能会导致tellg函数返回值为0的情况发生。同时,在读取文件时也需要注意文件的指针位置,以免影响文件读取操作。

  
  

评论区

请求出错了