_strdec、_wcsdec、_mbsdec、_mbsdec_l

将一个字符串指针后移一个字符

重要

mbsdec 和 mbsdec_l 不能用于在 Windows 运行时 中执行应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(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 函数返回指向在包含start 字符串中的先于 current 的多字节字符的第一个字节的指针。

输出值受区域中的 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。有关详细信息,请参阅平台调用示例

请参见

参考

字符串操作 (CRT)

_strinc、_wcsinc、_mbsinc、_mbsinc_l

_strnextc、_wcsnextc、_mbsnextc、_mbsnextc_l

_strninc、_wcsninc、_mbsninc、_mbsninc_l