Шаг 179 - Немного о классе CString и LPCTSTR

Привет Артем.
Ответь пожалуйста, в письме, как используется 
этот чертов оператор LPCTSTR класса CString.
Ну ОЧЕНЬ надо.

С уважением Дмитрий.

Класс CString появился как альтернативный метод работы со строками типа char buffer[100]. При этом при его создании учитывалось, что многие функции уже созданы и необходимо будет обеспечить поддержку старого подхода основанного на указателях строк. Рассматривая данный указатель давайте посмотрим историю его появления.

typedef LPCSTR LPCTSTR;
typedef CONST CHAR *LPCSTR, *PCSTR;

Вот это просто указатель на строку. Только если Вы обратите внимание на буковку C в строке LPCTSTR этот указатель именно CONST. В MSDN описано, что LPCTSTR это 32 битный указатель на строку для совместимости с UNICODE и DBCS. UNICODE строки отличаются от обычных строк вот чем:

wchar_t - 16 бит
char	- 8  бит	

Проще всего воспринимать этот указатель как аналог указателя в Win32

 LPCSTR (Win32 data type)  - LPCTSTR 

32 битный указатель на строку. Использовать его можно также как и используется указатель на буфер. Вот пример кода.

char buffer[100];
strcpy(buffer,"Hello World!\n");
LPCTSTR st=buffer;
CString s(st);
AfxMessageBox(s);

Кроме того в классе CString есть оператор LPCTSTR

operator LPCTSTR ( ) const;

Этот оператор позволяет получить доступ к строке в стиле C. Возвращается только указатель. Вот пример кода

CString s;
LPCTSTR lp;
s="Hi";
lp = (LPCTSTR) s;
printf(lp);
return 0;

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 8.05.2000