_strdec
, _wcsdec
, _mbsdec
_mbsdec_l
Sposta un puntatore di stringa indietro di un carattere.
Importante
_mbsdec
e _mbsdec_l
non possono essere usati nelle applicazioni eseguite in Windows Runtime. Per altre informazioni, vedere Funzioni CRT non supportate nelle app della piattaforma UWP (Universal Windows Platform).
Sintassi
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
);
Parametri
start
Puntatore a qualsiasi carattere (o per _mbsdec
e _mbsdec_l
, il primo byte di qualsiasi carattere multibyte) nella stringa di origine; start
deve precedere current
nella stringa di origine.
current
Puntatore a qualsiasi carattere (o per _mbsdec
e _mbsdec_l
, il primo byte di qualsiasi carattere multibyte) nella stringa di origine. current
Deve seguire start
nella stringa di origine.
locale
Impostazioni locali da usare.
Valore restituito
_mbsdec
, _mbsdec_l
, _strdec
e _wcsdec
restituiscono un puntatore al carattere che precede immediatamente ; _mbsdec
restituisce current
NULL
se il valore di start
è maggiore o uguale a quello di current
. _tcsdec
viene mappata a una di queste funzioni e il relativo valore restituito dipende dal mapping.
Osservazioni:
Le funzioni _mbsdec
e _mbsdec_l
restituiscono un puntatore al primo byte del carattere multibyte che precede immediatamente current
nella stringa contenente start
.
Il valore di output è interessato dall'impostazione dell'impostazione LC_CTYPE
della categoria delle impostazioni locali. Per altre informazioni, vedere setlocale
e _wsetlocale
. _mbsdec
riconosce le sequenze di caratteri multibyte in base alle impostazioni locali in uso, mentre _mbsdec_l
è identica ma usa il parametro delle impostazioni locali passato. Per altre informazioni, vedere Locale.
Se start
o current
è NULL
, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce EINVAL
e imposta errno
su EINVAL
.
Importante
Queste funzioni potrebbero essere vulnerabili a rischi di sovraccarico del buffer. I sovraccarichi del buffer possono essere utilizzati per gli attacchi di sistema perché possono causare un'elevazione dei privilegi non autorizzata. Per altre informazioni, vedere Evitare sovraccarichi del buffer.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Routine Tchar.h | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tcsdec |
_strdec |
_mbsdec |
_wcsdec |
_strdec
e _wcsdec
sono le versioni a caratteri a byte singolo e caratteri wide di _mbsdec
e _mbsdec_l
. _strdec
e _wcsdec
vengono forniti solo per questo mapping e non devono essere usati in caso contrario.
Per altre informazioni, vedere Uso di mapping di testo generico e mapping di testo generico.
Requisiti
Ciclo | Intestazione obbligatoria | Intestazione facoltativa |
---|---|---|
_mbsdec |
<mbstring.h> | <mbctype.h> |
_mbsdec_l |
<mbstring.h> | <mbctype.h> |
_strdec |
<tchar.h> | |
_wcsdec |
<tchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
L'esempio seguente illustra un uso di _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);
}
L'esempio seguente illustra un uso di _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);
}
Vedi anche
Manipolazione delle stringhe
_strinc
, _wcsinc
, _mbsinc
_mbsinc_l
_strnextc
, _wcsnextc
, _mbsnextc
_mbsnextc_l
_strninc
, _wcsninc
, _mbsninc
_mbsninc_l