diff --git a/cpp2c.cpp b/cpp2c.cpp index f783778..afb3d36 100644 --- a/cpp2c.cpp +++ b/cpp2c.cpp @@ -24,3 +24,16 @@ bool cpp2c::string2char(std::string inp, char*& out) { out = temp; return true; } + +bool cpp2c::string2char(std::wstring inp, wchar_t*& out) { + size_t le = inp.length(); + wchar_t* temp = (wchar_t*)malloc((le + 1) * sizeof(wchar_t)); + if (!temp) { + printf("Out of memory.\n"); + return false; + } + memcpy(temp, inp.c_str(), le * sizeof(wchar_t)); + temp[le] = 0; + out = temp; + return true; +} diff --git a/cpp2c.h b/cpp2c.h index 5fe5817..0fdded7 100644 --- a/cpp2c.h +++ b/cpp2c.h @@ -2,6 +2,7 @@ #define _UTILS_CPP2C_H #include +#include namespace cpp2c { /** @@ -11,6 +12,13 @@ namespace cpp2c { * @return true if succeeded. */ bool string2char(std::string inp, char*& out); + /** + * @brief Convert wstring to wchar_t* + * @param inp Input string + * @param out The pointer to output buffer. Need free memory by using free. + * @return true if succeeded. + */ + bool string2char(std::wstring inp, wchar_t*& out); } #endif