gpt4 book ai didi

c++ - 用C++查找文件大小

转载 作者:行者123 更新时间:2023-11-30 00:36:53 36 4
gpt4 key购买 nike

更多问题,我真的很困惑,而且一直困扰着我,我也用 dirent.h 尝试了几乎所有的东西。但这是我想要的示例:

#include <iostream>
#include "DataEventResponseMsg.idl"
using namespace std;

int main(){
cout << "This is the size: " << sizeof(DataEventResponseMsg) << endl;
return 0;
}

所做的是包含该特定文件并找到它的大小并打印它。我想这样做,但我需要它来打开一个充满 .idl 文件的目录,并使用 sizeof..打印它是哪个文件和它的大小。

我试着用 dirent.h 来做,打开目录,把内容放到 ent->d_name 中,然后寻找 d_name 的大小等等,但所做的只是打印 d_name 的大小pointer.. 我尝试将文件放入一个数组中,但是执行 sizeof 只会打印数组的大小。我希望它打印实际文件的大小,就像我将它们包含在头文件中一样,就像我发布的一样。

这可能吗?我很困惑,我需要让它工作,但我需要帮助。

请帮忙。

编辑 ------

所以我用 dirent.h 完成了这个:

#include <iostream>
#include <dirent.h>
#include <string.h>
#include <fstream>

using namespace std;

int main( int argc, char* argv[] ){
char FileArr[20][256];
DIR *dir;
FILE *fp;
int i = 0;
int k;
struct dirent *ent;

dir = opendir (argv[1]);
if( dir != NULL ){
while(( ent = readdir ( dir ) ) != NULL ){
strcpy( FileArr[i], ent->d_name );
fp = fopen( FileArr[i], "rw" );
cout << FileArr[i] << ", " << sizeof(FileArr[i]) << endl;
fclose(fp);
i++;
}
closedir( dir );
}
return 0;
}

这从命令行打开目录,并将内容放入 ent->d_name,我将这些字符串复制到一个数组中,并试图找出数组中所有内容的大小。但是,执行 sizeof 只会影响数组的大小,如果我使用指针,则指针的大小。我想找到实际文件的 sizeof,而不是保存文件字符串/名称的任何内容。

最佳答案

在 C++ 中有几种获取文件大小的方法。一种方法是查找文件末尾,然后询问文件指针的位置:

ifstream file("filename.idl", ios::in);
file.seekg(0, ios::end);
auto fileSize = file.tellg();

本页甚至给出了一个示例:

http://www.cplusplus.com/reference/istream/istream/tellg/

除此之外,还有其他(特定于操作系统的)解决方案,就像评论中指出的那样,但无论您的平台如何,这种方法都应该有效。

关于c++ - 用C++查找文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612355/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com