_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 current
inmediatamente 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