diff options
Diffstat (limited to 'src/libjin/Common/utf8.cpp')
-rw-r--r-- | src/libjin/Common/utf8.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/libjin/Common/utf8.cpp b/src/libjin/Common/utf8.cpp new file mode 100644 index 0000000..f21a0d9 --- /dev/null +++ b/src/libjin/Common/utf8.cpp @@ -0,0 +1,42 @@ +#include "../modules.h" +#if JIN_OS == JIN_WINDOWS + +#include "utf8.h" + +namespace jin +{ + + std::string to_utf8(LPCWSTR wstr) + { + size_t wide_len = wcslen(wstr) + 1; + + // Get size in UTF-8. + int utf8_size = WideCharToMultiByte(CP_UTF8, 0, wstr, wide_len, 0, 0, 0, 0); + + char * utf8_str = new char[utf8_size]; + + // Convert to UTF-8. + int ok = WideCharToMultiByte(CP_UTF8, 0, wstr, wide_len, utf8_str, utf8_size, 0, 0); + + if (!ok) + { + delete[] utf8_str; + } + + return ok ? std::string(utf8_str) : std::string(); + } + + void replace_char(std::string & str, char find, char replace) + { + int length = str.length(); + + for (int i = 0; i<length; i++) + { + if (str[i] == find) + str[i] = replace; + } + } + +} // jins + +#endif // JIN_OS == JIN_WINDOWS
\ No newline at end of file |