Использование recursive_directory_iterator в Visual Studio 2017 - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь использовать recursive_directory_iterator в приложении Windows Visual Studio 2017 C ++ для форм, но хотя я много раз пробовал и гуглил, я не могу заставить его работать.

Вот мои включения:

#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <strsafe.h>
#include <sstream>
#include <msclr\marshal.h>
#include "Form1.h"
#include <filesystem>

И в Form1.h у меня есть:

#pragma once

namespace fs = std::experimental::filesystem;

namespace ReadDir2 
{

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Collections::Generic;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace msclr::interop;
// using namespace std;
using namespace std::experimental::filesystem;

И где я пытаюсь использовать метод:

for (auto& p : fs::recursive_directory_iterator("E:\\Pictures\\2013 HOG Test Photos"))
                {
                    String^ sub_directory;
                    sub_directory = marshal_as<String^>(p);
                    Console::WriteLine("Directory name is " + sub_directory);

Сообщение об ошибке компиляции, которое я получаю, говорит:что метод не является частью класса std::experimental::filesystem.Я попробовал все виды комбинаций имени класса безрезультатно.

Язык установлен на C ++ 17Любой совет будет наиболее ценным.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Вы должны включить filesystem в заголовок, а не в исходный файл.Вы используете пространство имен в своем заголовке, поэтому необходимо добавить включение.

То же самое для других отсутствующих включений.

0 голосов
/ 11 октября 2018

Найдена проблема: #include файловой системы должно быть перед #include формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...