'Filesystem' 成员不在 'std' 命名空间中
'Filesystem' member not in 'std' namespace
我有一些代码打算获取 PNG 图像的文件大小(来自不同的堆栈溢出 post)。
#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 ] = '[=12=]';
std::cout << "Data size: " << std::strlen( data ) << std::endl;
}
在 运行 之后,我收到错误消息`命名空间 'std' 中没有名为 'filesystem' 的成员;你是说 'std::__fs::filesystem'。即使尝试使用后一个函数也会导致其自身的错误。我需要帮助确定这是否是未安装所有正确软件包的问题,或者可能是我的 IDE 设置?我应该注意到我 运行 在 MacBook OS 11.2.3 和 QtCreator 5.14.2.
错误提示您的编译器不支持 std::filesystem。
有是诸如“std::filesystem”之类的东西......取决于你的编译器。
这个 link 可能有帮助:
CONFIG += c++17
can be used with Qt 5.12 and later.
For Qt 5.11 and earlier, it is not a recognized QMake flag and you
have to get your hands a bit dirty.
Adding QMAKE_CXXFLAGS += -std=c++17
does the job for GCC & Clang;
for MSVC you will probably need to specify /std:c++17
or
/std:c++latest
如果两个选项都不起作用,请post返回您的特定编译器版本。
我有一些代码打算获取 PNG 图像的文件大小(来自不同的堆栈溢出 post)。
#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 ] = '[=12=]';
std::cout << "Data size: " << std::strlen( data ) << std::endl;
}
在 运行 之后,我收到错误消息`命名空间 'std' 中没有名为 'filesystem' 的成员;你是说 'std::__fs::filesystem'。即使尝试使用后一个函数也会导致其自身的错误。我需要帮助确定这是否是未安装所有正确软件包的问题,或者可能是我的 IDE 设置?我应该注意到我 运行 在 MacBook OS 11.2.3 和 QtCreator 5.14.2.
错误提示您的编译器不支持 std::filesystem。
有是诸如“std::filesystem”之类的东西......取决于你的编译器。
这个 link 可能有帮助:
CONFIG += c++17
can be used with Qt 5.12 and later.For Qt 5.11 and earlier, it is not a recognized QMake flag and you have to get your hands a bit dirty.
Adding
QMAKE_CXXFLAGS += -std=c++17
does the job for GCC & Clang; for MSVC you will probably need to specify/std:c++17
or/std:c++latest
如果两个选项都不起作用,请post返回您的特定编译器版本。