What the difference between LPCSTR, LPCTSTR and LPTSTR?
Why do we need to do this to convert a string into a LV_ITEM structure variable pszText:  
LV_DISPINFO dispinfo;  
dispinfo.item.pszText = LPTSTR((LPCTSTR)string);
- 
                        quick and dirty: LP == long pointer. Just think pointer or char* C = const in this case i think they mean the character string is a const, not the pointer being const. STR is string the T is for a wide character or char (TCHAR) depending on compile options. jalf : T is not for wide character, it is for varying character type. W is for wide (as in WCHAR). If UNICODE is defined, TCHAR == WCHAR, otherwise TCHAR == CHAR. So if UNICODE is not defined, LPCTSTR == LPCSTR.Tim : that is why I wrote "depending on compile options"nXqd : I really love this type of explaining :) . Thanks so much
- 
                        To answer the first part of your question: LPCSTR is a const string LPCTSTR is a const TCHAR string, (TCHAR being either a wide char or char depending on whether UNICODE is defined) LPTSTR is a (non-const) TCHAR string This is a great codeproject article describing C++ strings (see 2/3 the way down for a chart comparing the different types) nothingMaster : I quickly scanned that article - seems great, adding it to my bookmarks and will read it as soon as I have time.
- 
                        Adding to John and Tim's answer. Unless you are coding on Win98, there are only two of the 6+ string types you should be using in your application - LPWSTR
- LPCWSTR
 The rest are meant to support ANSI platforms or dual compiles. Those are not as relevant today as they used to be. BlueRaja - Danny Pflughoeft : What about std::string?JaredPar : @BlueRaja, I was mainly referring to C based strings in my answer. But for C++ I would avoid `std::string` because it is still an ASCII based string and prefer `std::wstring` instead.
- 
                        Read MSDN where everything is explained , this will avoid noob questions 
 
0 comments:
Post a Comment