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.
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:
TCHAR
is not an array type. –
Southeasterly TCHAR szDestPathRoot[MAX_PATH]="String This";
TCHAR substringValue[4] = {0};
memcpy(substringValue, szDestPathRoot, sizeof(TCHAR) * 3);
This is somewhat ugly but if you know for sure that:
You could just put a terminating NUL 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.
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 );
strncpy
or strncpy_s
. But, however, why not using std's string classes? –
Venenose std::wstring
is a string of wchar_t
not TCHAR
. With std::wstring
don't use the _T()
macro just prefix the literal with an L
. 2. As @user421195 mentioned the TCHAR
version of strncpy()
is tcsncpy()
–
Gama TCHAR
, it should be std::basic_string<TCHAR>
, not std::wstring
. –
Shatzer © 2022 - 2024 — McMap. All rights reserved.
MAX_PATH + 1
to prevent overflows. – HydrogenolysisMAX_PATH
is 260, which includes the null termination length. (The maximum supported path length is 255 characters) See msdn.microsoft.com/en-us/library/aa365247.aspx – Thayne_T()
macro. That will make it a wide string literal in unicode builds. – Gama