我有一个TCHAR和值如下:
TCHAR szDestPathRoot[MAX_PATH]="String This";
现在我想要来自TCHAR的前三个角色,如下所示:
szDestPathRoot.substring(0,2);
我该怎么办呢。
答案 0 :(得分:12)
TCHAR[]
是一个简单的以null结尾的数组(而不是C ++类)。结果,没有“.substring()”方法。
TCHAR[]
(根据定义)可以是宽字符串(Unicode)或简单字符串(ASCII)。这意味着每个字符串函数(wcs
vs str
等等)都有wcslen()
和strlen()
个等价物。和不可知的编译时TCHAR
等效,可以是/或。
TCHAR
等效strncpy()
为tcsncpy()
。
最后警告:要声明TCHAR
字面值,最好使用_T()
字符,如下面的代码段所示:
TCHAR szDestPathRoot[MAX_PATH] = _T("String This");
TCHAR szStrNew[4];
_tcsncpy (str_new, szTestPathRoot, 3);
您可能会发现这些链接很有用:
答案 1 :(得分:3)
TCHAR szDestPathRoot[MAX_PATH]="String This";
TCHAR substringValue[4] = {0};
memcpy(substringValue, szDestPathRoot, sizeof(TCHAR) * 3);
答案 2 :(得分:1)
这有点难看,但如果你确定知道:
您可以将终止NUL放在第4位置,使字符串3 char长。
szDestPathRoot[3] = _T('\0');
请注意,此操作对原始字符串具有破坏性
你应该在C ++代码中使用字符串类。
答案 3 :(得分:1)
如果您使用“C ++”标记了问题,则可以使用std库的字符串类:
std::wstring strDestPathRoot( _T("String This") );
strDestPathRoot.substr( 0, 2 );