基于对 Size of file using C++17 的回复,我写了下面的程序。但是,当可执行文件运行时,出现段错误。我在运行 High Sierra 的 iMac 上使用 g++ 8.3.0。
// c17filesize.cpp
// Jul-02-2019
#include <cstring>
#include <filesystem>
using namespace std;
int main(int argc, char **argv)
{
char filename[100];
(argc > 1) ? strcpy(filename, argv[1]) : strcpy(filename, __FILE__);
auto size = filesystem::file_size(filename);
}
最佳答案
- 比 C 风格的字符串更喜欢使用字符串(及其构造器)。
- 根据https://en.cppreference.com/w/cpp/filesystem/file_size您必须指定完整路径。您是否验证 argv[1] 包含完整路径?
在尝试读取其大小之前检查文件是否存在 std::filesystem::exists(filename);
使用 try 和 catch 部分来捕获异常。
关于C++17 文件系统调用产生段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56845734/