21xrx.com
2024-09-17 03:44:50 Tuesday
登录
文章检索 我的文章 写文章
C++中使用ifstream读取文件大小,tellg返回值为0
2023-07-05 09:56:48 深夜i     --     --
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的情况发生。同时,在读取文件时也需要注意文件的指针位置,以免影响文件读取操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复