111 lines
2.6 KiB
C++
111 lines
2.6 KiB
C++
#include "StringHelper.h"
|
|
#include <vector>
|
|
|
|
|
|
StringHelper::StringHelper()
|
|
{
|
|
}
|
|
|
|
|
|
StringHelper::~StringHelper()
|
|
{
|
|
}
|
|
|
|
string StringHelper::AsciiToUtf8(const string& str)
|
|
{
|
|
int unicodeLen = MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, nullptr, 0);
|
|
wchar_t* pUnicode = (wchar_t*)malloc(sizeof(wchar_t) * unicodeLen);
|
|
MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, pUnicode, unicodeLen);
|
|
int ansiiLen = WideCharToMultiByte(CP_UTF8, 0, pUnicode, -1, nullptr, 0, nullptr, nullptr);
|
|
char* pAssii = (char*)malloc(sizeof(char) * ansiiLen);
|
|
WideCharToMultiByte(CP_UTF8, 0, pUnicode, -1, pAssii, ansiiLen, nullptr, nullptr);
|
|
string ret_str(pAssii);
|
|
free(pUnicode);
|
|
free(pAssii);
|
|
return ret_str;
|
|
}
|
|
|
|
|
|
|
|
string StringHelper::GenerateUUID()
|
|
{
|
|
UUID uuid;
|
|
::UuidCreate(&uuid);
|
|
char buffer[50];
|
|
sprintf_s(buffer, sizeof(buffer),
|
|
"%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X",
|
|
uuid.Data1, uuid.Data2, uuid.Data3,
|
|
uuid.Data4[0], uuid.Data4[1], uuid.Data4[2],
|
|
uuid.Data4[3], uuid.Data4[4], uuid.Data4[5],
|
|
uuid.Data4[6], uuid.Data4[7]);
|
|
return string(buffer);
|
|
}
|
|
|
|
void StringHelper::Split(string str, char dim, vector<string>& rels)
|
|
{
|
|
char* strToken = NULL;
|
|
char* next_token = NULL;
|
|
strToken = strtok_s((char*)str.c_str(), &dim, &next_token);
|
|
while (strToken != NULL) {
|
|
rels.push_back(strToken);
|
|
strToken = strtok_s(NULL, &dim, &next_token);
|
|
}
|
|
}
|
|
|
|
wstring StringHelper::Str2Wstr(string str)
|
|
{
|
|
wstring result;
|
|
int len = MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), NULL, 0);
|
|
wchar_t* buffer = new wchar_t[len + 1];
|
|
MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.size(), buffer, len);
|
|
buffer[len] = '\0';
|
|
result.append(buffer);
|
|
delete[] buffer;
|
|
return result;
|
|
}
|
|
|
|
string StringHelper::Wstr2Str(wstring wstr)
|
|
{
|
|
if (wstr.empty())return "";
|
|
int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
|
|
char* buffer = new char[len + 1];
|
|
memset(buffer, '\0', len + 1);
|
|
int nResult = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
|
|
if (nResult == 0)
|
|
{
|
|
return "";
|
|
}
|
|
string str(buffer);
|
|
delete[]buffer;
|
|
return str;
|
|
}
|
|
|
|
string StringHelper::ReadString(ifstream* ifs)
|
|
{
|
|
char buffer[2048];
|
|
memset(buffer, '\0', sizeof(buffer));
|
|
int flag = 0;
|
|
char temp;
|
|
int pos = ifs->cur;
|
|
while (!ifs->eof()) {
|
|
ifs->get(temp);
|
|
if (temp == '\0') {
|
|
break;
|
|
}
|
|
else {
|
|
buffer[flag] = temp;
|
|
}
|
|
flag++;
|
|
if (flag >= sizeof(buffer)) {
|
|
break;
|
|
}
|
|
}
|
|
return string(buffer);
|
|
}
|
|
|
|
string StringHelper::Double2String(double dvalue, string frt)
|
|
{
|
|
char buffer[123];
|
|
sprintf_s(buffer, sizeof(buffer), frt.c_str(), dvalue);
|
|
return string(buffer);
|
|
} |