diff options
| author | Egor Tensin <egor@tensin.name> | 2026-06-04 21:38:49 +0200 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2026-06-04 21:38:49 +0200 |
| commit | 514216d54a7ec218d089964dca48fed25b795ea8 (patch) | |
| tree | 67fa7dc9fbdf97ad837a7e30801f6c1a41d4e8f2 /src/convert.cpp | |
| parent | upgrade to std::format (diff) | |
| download | winapi-utf8-514216d54a7ec218d089964dca48fed25b795ea8.tar.gz winapi-utf8-514216d54a7ec218d089964dca48fed25b795ea8.zip | |
upgrade to concepts and string views
Diffstat (limited to '')
| -rw-r--r-- | src/convert.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/convert.cpp b/src/convert.cpp index 0f96767..675d244 100644 --- a/src/convert.cpp +++ b/src/convert.cpp @@ -80,15 +80,13 @@ void verify_output(const std::vector<CharT>& expected, int32_t _actual_size) { } // namespace -std::wstring widen(const std::string& src) { - return widen(src.c_str(), src.size()); +std::wstring widen(std::string_view src) { + return widen(src.data(), src.length()); } -#ifdef __cpp_lib_char8_t -std::wstring widen(const std::u8string& src) { - return widen(src.c_str(), src.size()); +std::wstring widen(std::u8string_view src) { + return widen(src.data(), src.length()); } -#endif std::wstring widen(const void* src, std::size_t in_nb) { const DWORD flags = MB_ERR_INVALID_CHARS; @@ -115,13 +113,13 @@ std::wstring widen(const void* src, std::size_t in_nb) { return {out.data(), out.size()}; } -std::string narrow(const std::wstring& src) { +std::string narrow(std::wstring_view src) { static_assert(sizeof(wchar_t) == sizeof(WCHAR), "wchar_t != WCHAR"); - return narrow(src.c_str(), src.size() * sizeof(std::wstring::value_type)); + return narrow(src.data(), src.length() * sizeof(std::wstring_view::value_type)); } -std::string narrow(const std::u16string& src) { - return narrow(src.c_str(), src.size() * sizeof(std::u16string::value_type)); +std::string narrow(std::u16string_view src) { + return narrow(src.data(), src.length() * sizeof(std::u16string_view::value_type)); } std::string narrow(const void* src, std::size_t in_nb) { |
