diff options
| author | JosJuice <josjuice@gmail.com> | 2019-06-21 18:07:59 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2019-06-21 18:34:21 +0200 |
| commit | c0a6fa5dcc5a1335ee9eeb940bdfc6934ed01656 (patch) | |
| tree | 92aa7eb99fcea23b8c04a8b522ea217fc4e5368c /Source/Core/Common/StringUtil.cpp | |
| parent | f08aa2d842e980471d41992e7949c97c9661432d (diff) | |
Work around C++20 std::filesystem changes related to u8string
Diffstat (limited to 'Source/Core/Common/StringUtil.cpp')
| -rw-r--r-- | Source/Core/Common/StringUtil.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/Core/Common/StringUtil.cpp b/Source/Core/Common/StringUtil.cpp index 0df4b595cd..275c1e2af0 100644 --- a/Source/Core/Common/StringUtil.cpp +++ b/Source/Core/Common/StringUtil.cpp @@ -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 |
