首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何子串TCHAR

如何子串TCHAR
EN

Stack Overflow用户
提问于 2010-10-28 12:47:55
回答 4查看 18.3K关注 0票数 5

我有一个TCHAR和值,如下:

代码语言:javascript
复制
TCHAR          szDestPathRoot[MAX_PATH]="String This";

现在我想要TCHAR中的前三个字符,如下所示:

代码语言:javascript
复制
szDestPathRoot.substring(0,2);

我该怎么做呢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-28 13:40:30

TCHAR[]是一个简单的以null结尾的数组(而不是C++类)。因此,没有".substring()“方法。

TCHAR[] (根据定义)可以是宽字符串(Unicode),也可以是简单字符字符串(ASCII)。这意味着每个字符串函数都有wcsstr等效项(wcslen()strlen()等)。和一个不可知的、编译时TCHAR等效物,可以是/或。

strncpy()TCHAR中的等价物是tcsncpy()

最后警告:要声明TCHAR文本,最好使用_T()宏,如以下代码片段所示:

代码语言:javascript
复制
TCHAR szDestPathRoot[MAX_PATH] = _T("String This");
TCHAR szStrNew[4];
_tcsncpy (str_new, szTestPathRoot, 3);

您可能会对以下链接感兴趣:

  • http://msdn.microsoft.com/en-us/library/xdsywd25%28VS.71%29.aspx
  • http://www.i18nguy.com/unicode/c-unicode.html
  • http://msdn.microsoft.com/en-us/library/5dae5d43(VS.80).aspx (用于使用安全_tcsncpy_s)
票数 13
EN

Stack Overflow用户

发布于 2010-10-28 12:52:32

代码语言:javascript
复制
TCHAR szDestPathRoot[MAX_PATH]="String This";
TCHAR substringValue[4] = {0};
memcpy(substringValue, szDestPathRoot, sizeof(TCHAR) * 3);
票数 4
EN

Stack Overflow用户

发布于 2010-10-28 12:48:50

这有点难看,但如果您确定:

  1. 字符串至少包含4个TCHAR (3个字符加上终止NUL)
  2. 字符串的内容可以修改(这就是您的示例中的情况)。
  3. 您不必保持原始字符串的完整性

你可以把一个终止NUL放在第四个位置,使字符串有3个字符。

代码语言:javascript
复制
szDestPathRoot[3] = _T('\0');

请注意,此操作会破坏原始字符串

不过,您实际上应该在C++代码中使用string类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4039850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档