GrpcPrint/PrintS/utils/StringHelper.cpp
2024-03-19 17:45:12 +08:00

121 lines
3.1 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::Utf8ToAscii(const string& str)
{
int unicodeLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, nullptr, 0);
wchar_t* pUnicode = (wchar_t*)malloc(sizeof(wchar_t) * unicodeLen);
MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, pUnicode, unicodeLen);
int ansiiLen = WideCharToMultiByte(CP_ACP, 0, pUnicode, -1, nullptr, 0, nullptr, nullptr);
char* pAssii = (char*)malloc(sizeof(char) * ansiiLen);
WideCharToMultiByte(CP_ACP, 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[1024];
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++;
}
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);
}