Ошибка компиляции при использовании файловой системы и стандартных библиотек fstream - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь написать программу на c ++, которая читает какой-нибудь файл .txt, и я пробовал несколько способов открыть файл и проверить, существует ли он, но ни один из них не компилируется. Ниже приведены выдержки из моего кода:

#include <fstream>
#include <string>
#include <filesystem>

#include "read_graph.hpp"

ReadGraph::ReadGraph(const std::string filename) : _filename(filename) {}

bool ReadGraph::exists() {
  std::ifstream = gfile;               // case (1)
  std::filesystem::path p(_filename);  // case (2)

}
bool ReadGraph::readable() { return false; }

int main() { return 0; }

Ниже приводится мой CMakeLists.txt

cmake_minimum_required(VERSION 3.14)

project(graph_generator VERSION 0.1 LANGUAGES CXX)

add_library(read_graph
    read_graph.cpp
)

target_compile_features(read_graph PUBLIC cxx_std_20)
add_executable(exec
    read_graph.cpp
)

Когда я пытаюсь скомпилировать case (1) (т.е. case (2) комментируется), Я получаю следующую ошибку: error: expected unqualified-id std::ifstream = gfile;.

Когда я пытаюсь скомпилировать вариант (2), я получаю error: no member named 'filesystem' in namespace 'std' std::filesystem::path p(_filename);

Я не понимаю, что здесь происходит, так какЯ включил все правильные заголовки, и это стандартные библиотеки в C ++ 17 и 20, поэтому, насколько я понимаю, мне не нужно передавать дополнительные флаги в мои CMakeLists.

Заранее спасибо

...