Work around C++20 std::filesystem changes related to u8string

This commit is contained in:
JosJuice
2019-06-21 18:07:59 +02:00
parent f08aa2d842
commit c0a6fa5dcc
4 changed files with 38 additions and 4 deletions

View File

@ -623,3 +623,26 @@ std::string UTF16BEToUTF8(const char16_t* str, size_t max_size)
}
#endif
#ifdef HAS_STD_FILESYSTEM
// This is a replacement for path::u8path, which is deprecated starting with C++20.
std::filesystem::path StringToPath(std::string_view path)
{
#ifdef _MSC_VER
return std::filesystem::path(UTF8ToUTF16(std::string(path)));
#else
return std::filesystem::path(path);
#endif
}
// This is a replacement for path::u8string that always has the return type std::string.
// path::u8string returns std::u8string starting with C++20, which is annoying to convert.
std::string PathToString(const std::filesystem::path& path)
{
#ifdef _MSC_VER
return UTF16ToUTF8(path.native());
#else
return path.native();
#endif
}
#endif