• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Std:string в Lpctstr

  • Автор темы DmitryTarasov
  • Дата начала
D

DmitryTarasov

В 6-е работала конструкция:

LPCTSTR pszName;
std::string m_strName

m_strName = pszName;

Как в 2005 под уникодом выполнить это же, если переобъявлять ничего нельзя?
 
E

European

Конвертируйте строки при помощи WideCharToMultiByte
 
D

DmitryTarasov

Конвертируйте строки при помощи WideCharToMultiByte
Вот такой вариант не работает - выдает билеберду, хоть и компилится:
Код:
bool CFlatPopupMenu::AppendItem(const DWORD dwFlags,LPCTSTR pszName,const UINT itemid,const int icon)
{
CItem item;
LPSTR ss;
LPBOOL b;

item.m_dwFlags=dwFlags;

if (pszName)
{
pszName=(LPCTSTR)"52345";
WideCharToMultiByte(CP_ACP,0,pszName,5,ss,15,"!",b);
item.m_strName = ss; //std::string	 m_strName;

}

item.m_ItemID=itemid;
item.m_IconIndex=icon;
item.m_pPopup=NULL;

m_Items.push_back(item);
return true;
}
 
E

European

А примером не поделитесь?
Для приличия в MSDN могли заглянуть.
Код:
#include <windows.h>
#include <winnls.h>
#include <tchar.h>
#include <stdio.h>

BOOL Convert(const TCHAR* wszBuffer, CHAR* szBuffer)
{
int Length = ::WideCharToMultiByte(CP_UTF8, 0, wszBuffer, -1, NULL, 0, NULL, NULL);

if( szBuffer == NULL ) szBuffer = new char[Length];
memset(szBuffer, 0, Length);

return ::WideCharToMultiByte(CP_UTF8, 0, wszBuffer, -1, szBuffer, Length, NULL, NULL);
}

int main()
{
TCHAR Input[10] = _T("Input");
char Output[10];

BOOL Converted = Convert(Input, Output);
printf(Converted ? Output : "failed");
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!