_strdec
, , _wcsdec
_mbsdec
_mbsdec_l
Перемещают указатель строки на один символ назад.
Внимание
Функции _mbsdec
и _mbsdec_l
не могут использоваться в приложениях, запускаемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
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
идентична, за исключением того, что она использует переданный параметр языкового стандарта. Дополнительные сведения см. в разделе Locale.
Если start
или current
есть NULL
, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если продолжение выполнения разрешено, эта функция возвращает EINVAL
и задает для errno
значение EINVAL
.
Внимание
Эти функции могут быть подвержены угрозам переполнения буфера. Переполнение буфера можно использовать для атак на систему, поскольку оно может привести к несанкционированному повышению уровня привилегий. Дополнительные сведения см. в разделе "Избегание переполнения буфера".
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Сопоставления подпрограмм универсального текста
Подпрограмма 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
.
// crt_tcsdec.cpp
// Compile by using: cl /EHsc crt_tcsdec.cpp
#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
.
// crt_mbsdec.cpp
// Compile by using: cl /EHsc crt_mbsdec.c
#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);
}
См. также
Обработка строк
_strinc
, , _wcsinc
_mbsinc
_mbsinc_l
_strnextc
, , _wcsnextc
_mbsnextc
_mbsnextc_l
_strninc
, , _wcsninc
_mbsninc
_mbsninc_l