Gremlin92
@Gremlin92
Целеустремленный

TCHAR[] to string?

Вообщем считываю с 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);
}
  • Вопрос задан
  • 434 просмотра
Решения вопроса 1
Gremlin92
@Gremlin92 Автор вопроса
Целеустремленный
Странно заработали некоторые варианты кода в вопросе в этом компиляторе https://rextester.com/l/vcpp
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы