我正在使用 QT Creator 和 MinGW(均为最新版本),但无法让 ifstream 使用 c++17 中添加的路径参数构造函数。
编译以下代码将失败:
no matching constructor for initialization of 'std::ifstream'
我的 QT .pro 文件中有 CONFIG += c++17
和 LIBS += -lstdc++fs
MCV https://gcc.godbolt.org/z/Lb3MNT
#include <experimental/filesystem>
#include <fstream>
int main() {
const std::experimental::filesystem::path my_path = "C:/";
std::ifstream input_file_stream(my_path);
}
最佳答案
@ user1406186,我复制了你同样的错误,并且能够通过对 .pro
文件进行以下更改来编译它,并且必须指定我需要的 QMAKE
使用:
TEMPLATE = app
CONFIG += console c++11
QMAKE_CXXFLAGS += -std=gnu++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
main.cpp
HEADERS +=
LIBS += -lstdc++fs
它还使用以下 C++14/C++11 标准编译:
TEMPLATE = app
CONFIG += console c++14
QMAKE_CXXFLAGS += -std=gnu++14
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
main.cpp
HEADERS +=
LIBS += -lstdc++fs
关于c++ - ifstream 没有匹配的初始化构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55832764/