_strdec、_wcsdec、_mbsdec、_mbsdec_l
移动字符串指针返回一个字符。
重要
mbsdec 和 mbsdec_l 不能在 Windows 运行时执行的应用程序。有关更多信息,请参见 CRT 函数不支持与 /ZW。
unsigned char *_strdec(
const unsigned char *start,
const unsigned char *current
);
unsigned wchar_t *_wcsdec(
const unsigned wchar_t *start,
const unsigned wchar_t *current
);
unsigned char *_mbsdec(
const unsigned char *start,
const unsigned char *current
);
unsigned char *_mbsdec_l(
const unsigned char *start,
const unsigned char *current,
_locale_t locale
);
参数
start
对任何字符的指针 (对于 _mbsdec 和_mbsdec_l,第一个字节任何多字节字符) 在源字符串;start 必须在源字符串的 current。current
对任何字符的指针 (对于 _mbsdec 和_mbsdec_l,第一个字节任何多字节字符) 在源字符串;current 必须按照源字符串的 start。locale
使用的区域设置。
返回值
_mbsdec,_mbsdec_l、_strdec和 _wcsdec 每个返回指向紧邻 current的字符;,如果 start 的值大于或等于该 current,_mbsdec 返回 NULL。 _tcsdec 映射到这些函数之一,该方法的返回值取决于映射。
备注
_mbsdec 和 _mbsdec_l 函数返回指向紧邻在字符串的 current 包含 start多字节字符的第一个字节。
输出值受设置 LC_CTYPE 类设置的影响区域设置;请参见 setlocale, _wsetlocale 有关更多信息。 _mbsdec 根据当前正在使用的区域设置识别多字节字符序列,而 _mbsdec_l 相同,只不过它使用的区域设置参数。 有关更多信息,请参见区域设置。
如果 start 或 current 是 NULL,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续,此函数返回 EINVAL 并将 errno 到 EINVAL。
安全说明 |
---|
这些功能可能容易受到的缓冲区溢出威胁。因为它们可能产生权限的非确保提升,缓冲区溢出可以为系统攻击使用。有关更多信息,请参见 避免缓冲区溢出。 |
一般文本例程映射
Tchar.h 实例 |
未定义的_UNICODE 和_MBCS |
定义的_MBCS |
定义的_UNICODE |
---|---|---|---|
_tcsdec |
_strdec |
_mbsdec |
_wcsdec |
_strdec 和 _wcsdec 是 _mbsdec 的单字节字符和宽字符版本和 _mbsdec_l。 _strdec 和 _wcsdec 为映射的此仅提供不应以其他方式使用。
要求
实例 |
必需的标头 |
选项标头 |
---|---|---|
_mbsdec |
<mbstring.h> |
<mbctype.h> |
_mbsdec_l |
<mbstring.h> |
<mbctype.h> |
_strdec |
<tchar.h> |
|
_wcsdec |
<tchar.h> |
|
有关更多兼容性信息,请参见 兼容性。
示例
下面的示例演示对 _tcsdec的使用。
#include <iostream>
#include <tchar.h>
using namespace std;
int main()
{
const TCHAR *str = _T("12345");
cout << "str: " << str << endl;
const TCHAR *str2;
str2 = str + 2;
cout << "str2: " << str2 << endl;
TCHAR *answer;
answer = _tcsdec( str, str2 );
cout << "answer: " << answer << endl;
return (0);
}
下面的示例演示对 _mbsdec的使用。
#include <iostream>
#include <mbstring.h>
using namespace std;
int main()
{
char *str = "12345";
cout << "str: " << str << endl;
char *str2;
str2 = str + 2;
cout << "str2: " << str2 << endl;
unsigned char *answer;
answer = _mbsdec( reinterpret_cast<unsigned char *>( str ), reinterpret_cast<unsigned char *>( str2 ));
cout << "answer: " << answer << endl;
return (0);
}
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见平台调用示例。
请参见
参考
_strinc、_wcsinc、_mbsinc、_mbsinc_l