v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
34
source/core/StarString_windows.cpp
Normal file
34
source/core/StarString_windows.cpp
Normal file
|
@ -0,0 +1,34 @@
|
|||
#include "StarString_windows.hpp"
|
||||
|
||||
namespace Star {
|
||||
|
||||
size_t wcharLen(WCHAR const* s) {
|
||||
size_t size = 0;
|
||||
while (*s) {
|
||||
++size;
|
||||
++s;
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
String utf16ToString(WCHAR const* s) {
|
||||
if (!s)
|
||||
return "";
|
||||
int sLen = wcharLen(s);
|
||||
int utf8Len = WideCharToMultiByte(CP_UTF8, 0, s, sLen + 1, NULL, 0, NULL, NULL);
|
||||
auto utf8Buffer = new char[utf8Len];
|
||||
WideCharToMultiByte(CP_UTF8, 0, s, sLen + 1, utf8Buffer, utf8Len, NULL, NULL);
|
||||
auto result = String(utf8Buffer, utf8Len - 1);
|
||||
delete[] utf8Buffer;
|
||||
return result;
|
||||
}
|
||||
|
||||
unique_ptr<WCHAR[]> stringToUtf16(String const& s) {
|
||||
int utf16Len = MultiByteToWideChar(CP_UTF8, 0, s.utf8Ptr(), s.utf8Size() + 1, NULL, 0);
|
||||
unique_ptr<WCHAR[]> result;
|
||||
result.reset(new WCHAR[utf16Len]);
|
||||
MultiByteToWideChar(CP_UTF8, 0, s.utf8Ptr(), s.utf8Size() + 1, result.get(), utf16Len);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue