Sdílet prostřednictvím


_strdec, _wcsdec, , _mbsdec_mbsdec_l

Přesune ukazatel řetězce o jeden znak.

Důležité

_mbsdeca _mbsdec_l nelze je použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.

Syntaxe

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

Parametry

start
Ukazatel na libovolný znak (nebo pro _mbsdec a _mbsdec_l, první bajt libovolného vícebajtového znaku) ve zdrojovém řetězci; start musí předcházet current ve zdrojovém řetězci.

current
Ukazatel na libovolný znak (nebo pro _mbsdec a _mbsdec_l, první bajt libovolného vícebajtového znaku) ve zdrojovém řetězci; current musí následovat start ve zdrojovém řetězci.

locale
Národní prostředí, které se má použít.

Vrácená hodnota

_mbsdec, _mbsdec_l_strdeca _wcsdec každý z nich vrátí ukazatel na znak, který bezprostředně předchází current; _mbsdec vrátíNULL, pokud je hodnota start větší nebo rovna znaku .current _tcsdec mapuje na jednu z těchto funkcí a její návratovou hodnotu závisí na mapování.

Poznámky

Funkce _mbsdec vrátí ukazatel na první bajt vícebajtového znaku, který bezprostředně předchází current v řetězci, který obsahuje start._mbsdec_l

Výstupní hodnota je ovlivněna nastavením LC_CTYPE nastavení kategorie národního prostředí. Další informace naleznete v tématu setlocale, _wsetlocale. _mbsdec rozpozná vícebajtové sekvence znaků podle národního prostředí, které se aktuálně používá, zatímco _mbsdec_l je identické s tím rozdílem, že místo toho používá parametr národního prostředí, který je předán. Další informace naleznete v tématu Národní prostředí.

Pokud start nebo current je NULL, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, tato funkce vrátí EINVAL a nastaví errno hodnotu EINVAL.

Důležité

Tyto funkce můžou být ohrožené hrozbami přetečení vyrovnávací paměti. Přetečení vyrovnávací paměti se dá použít pro systémové útoky, protože můžou způsobit neoprávněné zvýšení oprávnění. Další informace najdete v tématu Zabránění přetečení vyrovnávací paměti.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Rutina Tchar.h _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_tcsdec _strdec _mbsdec _wcsdec

_strdec a _wcsdec jsou jednobajtů a širokoznakových verzí _mbsdec a _mbsdec_l. _strdec a _wcsdec jsou k dispozici pouze pro toto mapování a neměly by se používat jinak.

Další informace naleznete v tématu Použití mapování obecného textu a mapování obecného textu.

Požadavky

Rutina Požadovaný hlavičkový soubor Volitelné záhlaví
_mbsdec <mbstring.h> <mbctype.h>
_mbsdec_l <mbstring.h> <mbctype.h>
_strdec <tchar.h>
_wcsdec <tchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

Následující příklad ukazuje použití _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);
}

Následující příklad ukazuje použití _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);
}

Viz také

Manipulace s řetězci
_strinc, _wcsinc, , _mbsinc_mbsinc_l
_strnextc, _wcsnextc, , _mbsnextc_mbsnextc_l
_strninc, _wcsninc, , _mbsninc_mbsninc_l