_strdec, _wcsdec, _mbsdec, _mbsdec_l

Setzt einen Zeichenfolgenzeiger um ein Zeichen zurück.

Wichtig

_mbsdec und _mbsdec_l können nicht in Anwendungen verwendet werden, die in Windows-Runtime ausgeführt werden. Weitere Informationen finden Sie im Artikel CRT functions not supported in Universal Windows Platform apps (In Apps für die universelle Windows-Plattform nicht unterstützte CRT-Funktionen).

Syntax

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

Parameter

start
Zeiger auf ein beliebiges Zeichen (oder für _mbsdec und _mbsdec_l, das erste Byte eines beliebigen Multibyte-Zeichens) in der Quellzeichenfolge; start muss in der Quellzeichenfolge vorausgehen current .

current
Zeigen Sie auf ein beliebiges Zeichen (oder für _mbsdec und _mbsdec_l, das erste Byte eines beliebigen Multibyte-Zeichens) in der Quellzeichenfolge; current muss in der Quellzeichenfolge folgen start .

locale
Zu verwendendes Gebietsschema.

Rückgabewert

_mbsdec, _mbsdec_l, _strdecund _wcsdec jedes gibt einen Zeiger auf das Zeichen zurück, das unmittelbar vorausgeht current; _mbsdec gibt zurück NULL , wenn der Wert start größer oder gleich dem wert von currentist. _tcsdec wird einer dieser Funktionen zugeordnet und der Rückgabewert hängt von der Zuordnung ab.

Hinweise

Die Funktionen _mbsdec und _mbsdec_l geben einen Zeiger auf das erste Byte des Multibytezeichens zurück, das unmittelbar vor current in der Zeichenfolge steht, die start enthält.

Der Ausgabewert wird durch die Einstellung der LC_CTYPE Kategorieeinstellung des Gebietsschemas beeinflusst. Weitere Informationen finden Sie unter setlocale, _wsetlocaleverwalten. _mbsdec erkennt Multibytezeichensequenzen gemäß dem derzeit verwendeten Gebietsschema. _mbsdec_l ist nahezu identisch, verwendet jedoch stattdessen den übergebenen Gebietsschemaparameter. Weitere Informationen finden Sie unter Locale.

Wenn start oder current ist NULL, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt diese Funktion EINVAL zurück und stellt errno auf EINVAL ein.

Wichtig

Diese Funktionen sind möglicherweise für Pufferüberlaufrisiken anfällig. Pufferüberläufe können für Systemangriffe eingesetzt werden, da sie zu einer unbefugten Ausweitung der Berechtigungen führen. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

Tchar.h-Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tcsdec _strdec _mbsdec _wcsdec

_strdec und _wcsdec sind Einzelbytezeichen- und Breitzeichenversionen von _mbsdec und _mbsdec_l. _strdec und _wcsdec werden nur für diese Zuordnung bereitgestellt und sollten andernfalls nicht verwendet werden.

Weitere Informationen finden Sie unter Verwenden von generischen Textzuordnungen und generischen Textzuordnungen.

Anforderungen

Routine Erforderlicher Header Optionaler Header
_mbsdec <mbstring.h> <mbctype.h>
_mbsdec_l <mbstring.h> <mbctype.h>
_strdec <tchar.h>
_wcsdec <tchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Im folgenden Beispiel wird eine Verwendung von _tcsdec veranschaulicht.

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

Im folgenden Beispiel wird eine Verwendung von _mbsdec veranschaulicht.

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

Siehe auch

Zeichenfolgenmanipulation
_strinc, _wcsinc, _mbsinc, _mbsinc_l
_strnextc, _wcsnextc, _mbsnextc, _mbsnextc_l
_strninc, _wcsninc, _mbsninc, _mbsninc_l