I have a TCHAR and value as below:
TCHAR szDestPathRoot[MAX_PATH]="String This";
Now I want the 1st three character from TCHAR , like below:
szDestPathRoot.substring(0,2);
How can I do this.
I have a TCHAR and value as below:
TCHAR szDestPathRoot[MAX_PATH]="String This";
Now I want the 1st three character from TCHAR , like below:
szDestPathRoot.substring(0,2);
How can I do this.
This is somewhat ugly but if you know for sure that:
You could just put a terminating NULL at the 4th position to make the string 3 char long.
szDestPathRoot[3] = _T('\0');
Note that this operation is destructive to the original string
You should really be using a string class in C++ code though.
TCHAR szDestPathRoot[MAX_PATH]="String This";
TCHAR substringValue[4] = {0};
memcpy(substringValue, szDestPathRoot, sizeof(TCHAR) * 3);
TCHAR[]
is a simple null-terminated array (rather than a C++ class). As a result, there's no ".substring()" method.
TCHAR[]
(by definition) can either be a wide character string (Unicode) or a simple char string (ASCII). This means there are wcs
and str
equivalents for each string function (wcslen()
vs strlen()
, etc etc). And an agnostic, compile-time TCHAR
equivalent that can be either/or.
The TCHAR
equivalent of strncpy()
is tcsncpy()
.
Final caveat: to declare a TCHAR
literal, it's best to use the _T()
macro, as shown in the following snippet:
TCHAR szDestPathRoot[MAX_PATH] = _T("String This");
TCHAR szStrNew[4];
tcsncpy (str_new, szTestPathRoot, 3);
You may find these links to be of interest:
As you have tagged your question with "C++" you can use the string classes of the std library:
std::wstring strDestPathRoot( _T("String This") );
strDestPathRoot.substr( 0, 2 );