Udostępnij przez


_strdec, _wcsdec, _mbsdec, _mbsdec_l

Przenosi wskaźnik ciągu z powrotem o jeden znak.

Ważne

_mbsdecnie 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_strdeci _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 currentwartoś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 Zdefiniowane _UNICODE Zdefiniowane
_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