_strdec
, , _wcsdec
, , _mbsdec
_mbsdec_l
Przenosi wskaźnik ciągu z powrotem o jeden znak.
Ważne
_mbsdec
nie można jej _mbsdec_l
używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Funkcje CRT nieobsługiwane w aplikacjach platforma uniwersalna systemu Windows.
Składnia
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
Wskaźnik do dowolnego znaku (lub dla _mbsdec
i _mbsdec_l
, pierwszy bajt dowolnego znaku wielobajtowego) w ciągu źródłowym; start
musi poprzedzać current
ciąg źródłowy.
current
Wskaźnik do dowolnego znaku (lub dla _mbsdec
i _mbsdec_l
, pierwszy bajt dowolnego znaku wielobajtowego) w ciągu źródłowym; current
musi być zgodny start
z ciągiem źródłowym.
locale
Ustawienia regionalne do użycia.
Wartość zwracana
_mbsdec
, , _mbsdec_l
_strdec
i _wcsdec
każdy zwraca wskaźnik do znaku, który bezpośrednio poprzedza current
; _mbsdec
zwracaNULL
, jeśli wartość start
jest większa lub równa current
wartości . _tcsdec
mapowanie na jedną z tych funkcji, a jej wartość zwracana zależy od mapowania.
Uwagi
Funkcje _mbsdec
i _mbsdec_l
zwracają wskaźnik do pierwszego bajtu wielobajtowego znaku, który bezpośrednio poprzedza current
ciąg zawierający start
.
Na wartość wyjściową ma wpływ ustawienie LC_CTYPE
ustawienia kategorii ustawień regionalnych. Aby uzyskać więcej informacji, zobacz setlocale
, _wsetlocale
. _mbsdec
rozpoznaje sekwencje znaków wielobajtowych zgodnie z ustawieniami regionalnymi, które są obecnie używane, chociaż _mbsdec_l
jest identyczne, z tą różnicą, że zamiast tego używa parametru ustawień regionalnych, który jest przekazywany. Aby uzyskać więcej informacji, zobacz Ustawienia regionalne.
Jeśli start
lub current
jest NULL
, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, ta funkcja zwraca EINVAL
i ustawia wartość errno
.EINVAL
Ważne
Te funkcje mogą być narażone na przepełnienie buforu zagrożeń. Przepełnienia buforu mogą służyć do ataków systemowych, ponieważ mogą powodować nieuzasadnione podniesienie uprawnień. Aby uzyskać więcej informacji, zobacz Unikanie przekroków buforu.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Procedura tchar.h | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tcsdec |
_strdec |
_mbsdec |
_wcsdec |
_strdec
i _wcsdec
są wersjami znaków jednobajtowych i szerokiego _mbsdec
znaku i _mbsdec_l
. _strdec
i _wcsdec
są udostępniane tylko dla tego mapowania i nie powinny być używane w przeciwnym razie.
Aby uzyskać więcej informacji, zobacz Using generic-text mappings and Generic-text mappings (Używanie mapowań tekstu ogólnego i ogólnego tekstu).
Wymagania
Procedura | Wymagany nagłówek | Opcjonalny nagłówek |
---|---|---|
_mbsdec |
<mbstring.h> | <mbctype.h> |
_mbsdec_l |
<mbstring.h> | <mbctype.h> |
_strdec |
<tchar.h> | |
_wcsdec |
<tchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
W poniższym przykładzie pokazano użycie metody _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);
}
W poniższym przykładzie pokazano użycie metody _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);
}
Zobacz też
Manipulowanie ciągami
_strinc
, , _wcsinc
, , _mbsinc
_mbsinc_l
_strnextc
, , _wcsnextc
, , _mbsnextc
_mbsnextc_l
_strninc
, , _wcsninc
, , _mbsninc
_mbsninc_l