Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CString => LPWSTR


Автор: ano360 24.8.2008, 11:23
каким образом из переменной(не строковой константы) CString сделать LPWSTR?
Код


LPTVINSERTSTRUCT Instr;
...
CString af=L"asdfasd";
Instr->item.pszText=af;

Код

c:\documents and settings\wxp_f_vc05\мои документы\visual studio 2005\projects\cbot_creater\cbot_creater\check.cpp(58) : error C2440: '=' : cannot convert from 'CString' to 'LPWSTR'



Instr->item.pszText=(LPWSTR)af;// не помогает
Instr->item.pszText= reinterpret_cast<LPWSTR>af // не помогает

поиском пользовался... не нашел

Автор: jonie 24.8.2008, 12:48
LPWSTR это указатель на строку wchar_t по-умолчанию.
Код

CString str(_T("Hello"))
wchar_t* name = T2W(str.GetBuffer());
str.Release();

Автор: ano360 24.8.2008, 13:03
Спасибо большое за помоio.
Можно ещё прокоментировать, что делает ваш код?
что делает GetBuffer()?
и T2W() ? 
не хочется бездумно пользоваться тем что не знаешь даже что делает.

и ещё вот
Код

c:\documents and settings\wxp_f_vc05\мои документы\visual studio 2005\projects\cbot_creater\cbot_creater\check.cpp(59) : error C2039: 'Release' : is not a member of 'ATL::CStringT<BaseType,StringTraits>'
[S][/S]


Добавлено через 3 минуты и 35 секунд
кстатии:
Код
LPWSTR w;
w=str.GetBuffer();


тоже замечательно работает

Добавлено через 3 минуты и 46 секунд
кстатии:
Код
LPWSTR w;
w=str.GetBuffer();


тоже замечательно работает

Автор: KEHT 24.8.2008, 15:19
не Release, а ReleaseBuffer

GetBuffer фиксирует заданный размер буфера и возвращает char*

http://msdn.microsoft.com/en-us/library/aa314880(VS.60).aspx
http://msdn.microsoft.com/en-us/library/aa300574(VS.60).aspx

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)