【发布时间】:2021-06-06 00:08:28
【问题描述】:
我有一些代码打算获取 PNG 图像的文件大小(来自不同的堆栈溢出帖子)。
#include <fstream>
#include <cstring>
#include <cstddef>
#include <filesystem>
const char* INPUT_FILENAME = "test.png";
using namespace std;
int main()
{
std::ifstream file;
size_t size = 0;
std::cout << "Attempting to open " << INPUT_FILENAME << std::endl;
file.open( INPUT_FILENAME, std::ios::in | std::ios::ate );
char* data = 0;
file.seekg( 0, std::ios::end );
// size = file.tellg();
size = std::filesystem::file_size(INPUT_FILENAME);
std::cout << "File size: " << size << std::endl;
file.seekg( 0, std::ios::beg );
data = new char[ size - 8 + 1 ];
file.seekg( 8 ); // skip the header
file.read( data, size );
data[ size ] = '\0';
std::cout << "Data size: " << std::strlen( data ) << std::endl;
}
运行时,我收到错误“命名空间“std”中没有名为“文件系统”的成员;你的意思是'std::__fs::filesystem'。即使尝试使用后一个函数也会导致其自身的错误。我需要帮助确定这是否是未安装所有正确软件包或我的 IDE 设置的问题?我应该注意我在 MacBook OS 11.2.3 和 QtCreator 5.14.2 上运行。
【问题讨论】:
-
你使用的是什么编译器(clang?),什么版本?
std::filesystem仅在 C++17 中引入。如果您的编译器没有完整的 C++17 支持,它可能无法实现std::filesystem,或者它可能只提供临时实现std::experimental::filesystem。
标签: c++ macos runtime-error qt-creator