#include "StringHelper.h" #include 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& 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); }