aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Common/utf8.cpp
blob: f21a0d92db725631914e7d99b5db67f6a1275ab9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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