diff options
Diffstat (limited to 'intern/cycles/util/util_string.cpp')
-rw-r--r-- | intern/cycles/util/util_string.cpp | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/intern/cycles/util/util_string.cpp b/intern/cycles/util/util_string.cpp index 51306a249cd..b3a8c6d7c2e 100644 --- a/intern/cycles/util/util_string.cpp +++ b/intern/cycles/util/util_string.cpp @@ -165,14 +165,14 @@ string string_from_bool(bool var) wstring string_to_wstring(const string& str) { - const int length_wc = MultiByteToWideChar(CP_ACP, + const int length_wc = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), NULL, 0); wstring str_wc(length_wc, 0); - MultiByteToWideChar(CP_ACP, + MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), @@ -183,7 +183,7 @@ wstring string_to_wstring(const string& str) string string_from_wstring(const wstring& str) { - int length_mb = WideCharToMultiByte(CP_ACP, + int length_mb = WideCharToMultiByte(CP_UTF8, 0, str.c_str(), str.size(), @@ -191,7 +191,7 @@ string string_from_wstring(const wstring& str) 0, NULL, NULL); string str_mb(length_mb, 0); - WideCharToMultiByte(CP_ACP, + WideCharToMultiByte(CP_UTF8, 0, str.c_str(), str.size(), @@ -201,6 +201,42 @@ string string_from_wstring(const wstring& str) return str_mb; } +string string_to_ansi(const string& str) +{ + const int length_wc = MultiByteToWideChar(CP_UTF8, + 0, + str.c_str(), + str.length(), + NULL, + 0); + wstring str_wc(length_wc, 0); + MultiByteToWideChar(CP_UTF8, + 0, + str.c_str(), + str.length(), + &str_wc[0], + length_wc); + + int length_mb = WideCharToMultiByte(CP_ACP, + 0, + str_wc.c_str(), + str_wc.size(), + NULL, + 0, + NULL, NULL); + + string str_mb(length_mb, 0); + WideCharToMultiByte(CP_ACP, + 0, + str_wc.c_str(), + str_wc.size(), + &str_mb[0], + length_mb, + NULL, NULL); + + return str_mb; +} + #endif /* _WIN32 */ CCL_NAMESPACE_END |