_strdec, _wcsdec, , _mbsdec, _mbsdec_l

Hace retroceder el puntero de cadena un carácter.

Importante

_mbsdec y _mbsdec_l no se pueden usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.

Sintaxis

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
);

Parámetros

start
Puntero a cualquier carácter (o para _mbsdec y _mbsdec_l, el primer byte de cualquier carácter multibyte) de la cadena de origen; start debe preceder current a la cadena de origen.

current
Puntero a cualquier carácter (o para _mbsdec y _mbsdec_l, el primer byte de cualquier carácter multibyte) de la cadena de origen; current debe seguir start en la cadena de origen.

locale
Configuración regional que se va a usar.

Valor devuelto

_mbsdec, , y cada uno devuelve un puntero al carácter que precede currentinmediatamente a ; _mbsdec devuelve NULL si el valor de start es mayor o igual que el de current._wcsdec _strdec_mbsdec_l los mapas de_tcsdec se asigna a una de estas funciones y el valor que devuelve depende de la asignación.

Comentarios

Las funciones _mbsdec y _mbsdec_l devuelven un puntero al primer byte del carácter multibyte que precede inmediatamente a current en la cadena que contiene start.

El valor de salida se ve afectado por el valor de la categoría LC_CTYPE de la configuración regional. Para más información, vea setlocale, _wsetlocale. _mbsdec reconoce las secuencias de caracteres multibyte de acuerdo con la configuración regional que se usa actualmente; _mbsdec_l es idéntico, salvo que usa el parámetro de configuración regional que se pasa. Para obtener más información, vea Locale.

Si start o current es NULL, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, la función devuelve EINVAL y establece errno en EINVAL.

Importante

Estas funciones pueden ser vulnerables a amenazas de saturación del búfer. Las saturaciones del búfer se pueden usar para ataques del sistema, ya que pueden producir una elevación de privilegios no justificada. Para obtener más información, consulte Evitar saturaciones del búfer.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina Tchar.h _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tcsdec _strdec _mbsdec _wcsdec

_strdec y _wcsdec son versiones de caracteres de un solo byte y caracteres anchos de _mbsdec y _mbsdec_l. _strdec y _wcsdec solo se proporcionan para esta asignación y no se deben usar de otro modo.

Para obtener más información, consulte Uso de asignaciones de texto genérico y asignaciones de texto genérico.

Requisitos

Routine Encabezado necesario Encabezado opcional
_mbsdec <mbstring.h> <mbctype.h>
_mbsdec_l <mbstring.h> <mbctype.h>
_strdec <tchar.h>
_wcsdec <tchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

En el siguiente ejemplo, se muestra el uso de _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);
}

En el siguiente ejemplo, se muestra el uso de _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);
}

Consulte también

Manipulación de cadenas
_strinc, _wcsinc, , _mbsinc, _mbsinc_l
_strnextc, _wcsnextc, , _mbsnextc, _mbsnextc_l
_strninc, _wcsninc, , _mbsninc, _mbsninc_l