Condividi tramite


_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, _strdece _wcsdec restituiscono un puntatore al carattere che precede immediatamente ; _mbsdec restituisce currentNULL 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 setlocalee _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