_strdec
, _wcsdec
, , _mbsdec
_mbsdec_l
Přesune ukazatel řetězce o jeden znak.
Důležité
_mbsdec
a _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
_strdec
a _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