Convert filesystem::path into char* on windows(在Windows上将FileSystem::PATH转换为char*)
问题描述
C++17 filesystem基于bost.filessystems。
我现在正在Windows和VS2017上使用它。
我遍历目录
我要将路径传递给一个函数,该函数将文件路径作为const char *
我发现了关于boost filesystem here的类似问题。
核心区别在于path in C++17是基于value_type
的。
其中
value_type:文件系统本机编码使用的字符类型:POSIX上为char,Windows上为wchar_t
所以我得到的是一个const wchar_t *
字符串。
以下"工作"适用于我:
我正在寻找不同的版本,因为此实现有各种混乱之处(将数组衰减到指针和_CRT_SECURE_NO_WARNINGS)。
我正在寻找一个更漂亮的版本,它可以在Windows上使用新的C++17文件系统直接从路径转到const char *
。
这是我过去使用的SDL2项目。
编辑: 在评论部分有一个链接的类似问题so-question 该问题是同一核心问题的不同表现,即将路径转换为另一种方法可以使用的格式。我反对删除此问题,因为两者的搜索方式不同。
POSIX
您可以使用*string()
和generic_*string()
对象的generic_*string()
成员函数将路径转换为本机或泛型(即推荐答案样式)字符串。例如:
std::basic_string<T>
值。因此,必须确保,例如,通过直接对返回值调用.c_str()
获得的指针(如上例中所示)不会超过其指向…的字符串
这篇关于在Windows上将FileSystem::PATH转换为char*的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!