Поделиться через


_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; _mbsdec возвращает NULL, если значение start превосходит или равно параметру current. _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. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.

См. также

Ссылки

Управление строками (CRT)

_strinc, _wcsinc, _mbsinc, _mbsinc_l

_strnextc, _wcsnextc, _mbsnextc, _mbsnextc_l

_strninc, _wcsninc, _mbsninc, _mbsninc_l