diff options
author | chai <chaifix@163.com> | 2018-10-19 08:36:44 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-10-19 08:36:44 +0800 |
commit | 7d5f055547e70fa93ee9ac944e62f8d657b9dc55 (patch) | |
tree | 081782a1541854db4b8eb69c4b43081f52711286 /src/libjin/Common/je_utf8.cpp | |
parent | 02dd1f38008594048f0e28bad01e7c6d18844198 (diff) |
*修改文件名
Diffstat (limited to 'src/libjin/Common/je_utf8.cpp')
-rw-r--r-- | src/libjin/Common/je_utf8.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/libjin/Common/je_utf8.cpp b/src/libjin/Common/je_utf8.cpp new file mode 100644 index 0000000..de539c7 --- /dev/null +++ b/src/libjin/Common/je_utf8.cpp @@ -0,0 +1,42 @@ +#include "../core/je_configuration.h" +#if LIBJIN_OS == LIBJIN_WINDOWS + +#include "je_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; + } + } + +} // namespace jin + +#endif // LIBJIN_OS == LIBJIN_WINDOWS |