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


Автор: Succorso 5.6.2006, 22:43
У меня есть переменная типа string, а мне необходимо преобразовать её в тип LPCTSTR. Я сделал это через задницу так:

Код

string str = "hello";
CString cstr( str.c_str() );
LPCTSTR nameBox = (LPCTSTR) ss;


Как мне сделать данное преобразование более грамотнее? 

Автор: Dray 5.6.2006, 22:53
Код
std::string str ("Hello");
LPCSTR lpcmystr = str.c_str ();
MessageBox (lpcmystr);

Вряд ли можно более грамотно 

Автор: AlexPro 6.6.2006, 06:41
Succorso, а для чего ты вообще используешь одновременно и string и CString? Откуда такие мазохистские наклонности? smile  

Автор: Coocky 6.6.2006, 12:16
Цитата(AlexPro @  6.6.2006,  06:41 Найти цитируемый пост)
Откуда такие мазохистские наклонности

Такие наклоности обычно бывают при совместной разработке проекта с использованием МФС и без него.
 

Автор: Earnest 6.6.2006, 13:19
Или если в проекте включен UNICODE... Тогда
Код

std::string str ("Hello");
LPCTSTR lpcmystr = str.c_str ();

не скомпилируется. В этом случае лучше использовать wstring:
Код

std::wstring str (_T("Hello"));
LPCTSTR lpcmystr = str.c_str ();

 

Автор: Coocky 6.6.2006, 13:34
Цитата

не скомпилируется

Угу
Код

std::wstring str (_T("Hello"));
LPCTSTR lpcmystr = str.c_str ();

Ну тогда уже лучше (для наглядности) smile 
Код

std::wstring str (_T("Hello"));
LPCWSTR lpcmystr = str.c_str ();


 

Автор: Earnest 6.6.2006, 17:47
Ну уж нет... Лучше уж свой макрос для переключения wstring\string сделать, и писать код, максимально не зависяший от UNICODE. 

Автор: Earnest 7.6.2006, 18:25
Модератор: Пожалуйста, один топик - один вопрос. 

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