我正在尝试在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
任何建议将不胜感激。
答案 0 :(得分:0)
发现了问题:文件系统的#include必须在表单的#include之前。
答案 1 :(得分:0)
您必须在标头(而不是源文件)上包含filesystem
。您正在标题中使用名称空间,因此必须添加包含。
与其他缺失内容相同。