_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. Для получения дополнительной информации см. Примеры вызовов неуправляемого кода.
См. также
Ссылки
_strinc, _wcsinc, _mbsinc, _mbsinc_l