在Visual Studio 2017中使用recursive_directory_iterator

时间:2018-10-10 07:11:41

标签: c++ c++17

我正在尝试在Visual Studio 2017 C ++ Windows窗体应用程序中使用recursive_directory_iterator,但是尽管我已经尝试了很多次,并且Google进行了广泛的搜索,但是我无法使它正常工作。

这是我的包含物:

#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 :(得分:0)

发现了问题:文件系统的#include必须在表单的#include之前。

答案 1 :(得分:0)

您必须在标头(而不是源文件)上包含filesystem。您正在标题中使用名称空间,因此必须添加包含。

与其他缺失内容相同。