_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
, _strdec
und _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 current
ist. _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
, _wsetlocale
verwalten. _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. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
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
Zeichenfolgenbearbeitung
_strinc
, , _wcsinc
_mbsinc
_mbsinc_l
_strnextc
, , _wcsnextc
_mbsnextc
_mbsnextc_l
_strninc
, , _wcsninc
_mbsninc
_mbsninc_l