Вообщем считываю с edit в TCHAR[] pass, теперь нужно взять хэш, но там на входе string
В чем ошибка?
#include <iostream>
#include <Windows.h>
#include <atlstr.h>
#include <windowsx.h>
int main()
{
TCHAR c[500] = { 0 };
lstrcat(c,__TEXT("1Hell123"));
std::wstring wstr=L"";
for(int i=0;i<500;i++)
wstr+= c[i];
std::string str(wstr.begin(),wstr.end());
printf("%s\n",str);
}
и такой код не работает:
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
#include <Windows.h>
#include <atlstr.h>
#include <windowsx.h>
#include <iostream>
#include <locale>
inline std::string ToStr(const std::wstring& wstr)
{
static std::locale loc("");
static auto &facet = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(loc);
return std::wstring_convert<std::remove_reference<decltype(facet)>::type, wchar_t>(&facet).to_bytes(wstr);
}
inline std::wstring ToWstr(const std::string& str)
{
static std::locale loc("");
static auto &facet = std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t>>(loc);
return std::wstring_convert<std::remove_reference<decltype(facet)>::type, wchar_t>(&facet).from_bytes(str);
}
int main()
{
TCHAR c[500] = { 0 };
lstrcat(c,__TEXT("Hell123"));
std::wstring wstr=L"";
for(int i=0;i<500;i++)
{
wstr+= c[i];
printf("%lc",wstr[i]);
}
printf("\n");
char str[500];
sprintf(str,"%ls",wstr);
std::string str = ToStr(wstr);
printf("%s",str);
}
и такой
int main()
{
TCHAR c[500] = { 0 };
lstrcat(c,__TEXT("Hell123"));
std::wstring wstr=L"";
for(int i=0;i<500;i++)
{
wstr+= c[i];
printf("%lc",wstr[i]);
}
printf("\n");
char str[500];
sprintf(str,"%ls",wstr);
printf("%s",str);
}