strstr
, , wcsstr
_mbsstr
_mbsstr_l
Gibt einen Zeiger auf das erste Vorkommen einer Suchzeichenfolge in einer Zeichenfolge zurück.
Wichtig
_mbsstr
und _mbsstr_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
char *strstr(
const char *str,
const char *strSearch
); // C only
char *strstr(
char *str,
const char *strSearch
); // C++ only
const char *strstr(
const char *str,
const char *strSearch
); // C++ only
wchar_t *wcsstr(
const wchar_t *str,
const wchar_t *strSearch
); // C only
wchar_t *wcsstr(
wchar_t *str,
const wchar_t *strSearch
); // C++ only
const wchar_t *wcsstr(
const wchar_t *str,
const wchar_t *strSearch
); // C++ only
unsigned char *_mbsstr(
const unsigned char *str,
const unsigned char *strSearch
); // C only
unsigned char *_mbsstr(
unsigned char *str,
const unsigned char *strSearch
); // C++ only
const unsigned char *_mbsstr(
const unsigned char *str,
const unsigned char *strSearch
); // C++ only
unsigned char *_mbsstr_l(
const unsigned char *str,
const unsigned char *strSearch,
_locale_t locale
); // C only
unsigned char *_mbsstr_l(
unsigned char *str,
const unsigned char *strSearch,
_locale_t locale
); // C++ only
const unsigned char *_mbsstr_l(
const unsigned char *str,
const unsigned char *strSearch,
_locale_t locale
); // C++ only
Parameter
str
Zu suchende mit NULL endende Zeichenfolge.
strSearch
Zu suchende mit NULL endende Zeichenfolge.
locale
Zu verwendendes Gebietsschema.
Rückgabewert
Gibt einen Zeiger auf das erste Vorkommen von strSearch
"in str
" zurück, oder NULL
wenn strSearch
er nicht angezeigt wird str
. Wenn strSearch
auf eine Zeichenfolge der Länge 0 (Null) zeigt wird, gibt die Funktion str
zurück.
Hinweise
Die strstr
-Funktion gibt einen Zeiger auf das erste Vorkommen von strSearch
in str
zurück. Die Suche enthält nicht das Beenden von NULL-Zeichen. wcsstr
ist die Breitzeichenversion von strstr
, und _mbsstr
ist die Multibytezeichenversion. Die Argumente und der Rückgabewert wcsstr
sind Zeichenfolgen mit breitem Zeichen. Die Argumente und der Rückgabewert sind _mbsstr
Multibyte-Zeichenfolgen. _mbsstr
überprüft die eigenen Parameter. Wenn str
oder strSearch
ist NULL
, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, legt _mbsstr
errno
auf EINVAL
fest und gibt 0 zurück. strstr
und wcsstr
überprüfen Sie ihre Parameter nicht. Diese drei Funktionen verhalten sich andernfalls identisch.
Wichtig
Diese Funktionen können eine Bedrohung aufgrund eines Pufferüberlaufproblems darstellen. Pufferüberlaufprobleme können für Angriffe auf ein System eingesetzt werden, da sie die Ausführung von willkürlichem Code ermöglichen können, was zur einer unbefugten Ausweitung der Berechtigungen führen kann. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.
In C akzeptieren diese Funktionen einen const
-Zeiger als erstes Argument. In C++ sind zwei Überladungen verfügbar. Die Überladung, die einen Zeiger auf const
akzeptiert, gibt einen Zeiger auf const
zurück, und die Version, die einen Zeiger auf Nicht-const
akzeptiert, gibt einen Zeiger auf Nicht-const
zurück. Das Makro _CRT_CONST_CORRECT_OVERLOADS
wird definiert, wenn sowohl die const
Als auch die Nicht-Versionconst
dieser Funktionen verfügbar sind. Wenn Sie das Nicht-Verhalten für beide C++-const
Überladungen benötigen, definieren Sie das Symbol _CONST_RETURN
.
Der Ausgabewert wird durch die Gebietsschemakategorieeinstellung von LC_CTYPE
; für weitere Informationen, siehe setlocale
, . _wsetlocale
Die Versionen dieser Funktionen, die nicht über das _l
Suffix verfügen, verwenden das aktuelle Gebietsschema für dieses gebietsschemaabhängige Verhalten. Die Versionen mit dem _l
Suffix sind identisch, mit der Ausnahme, dass sie stattdessen den gebietsschemaparameter verwenden, der übergeben wird. Weitere Informationen finden Sie unter Locale.
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 |
---|---|---|---|
_tcsstr |
strstr |
_mbsstr |
wcsstr |
Nicht zutreffend | Nicht zutreffend | _mbsstr_l |
Nicht zutreffend |
Anforderungen
Routine | Erforderlicher Header |
---|---|
strstr |
<string.h> |
wcsstr |
<string.h> oder <wchar.h> |
_mbsstr , _mbsstr_l |
<mbstring.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Beispiel
// crt_strstr.c
#include <string.h>
#include <stdio.h>
char str[] = "lazy";
char string[] = "The quick brown dog jumps over the lazy fox";
char fmt1[] = " 1 2 3 4 5";
char fmt2[] = "12345678901234567890123456789012345678901234567890";
int main( void )
{
char *pdest;
int result;
printf( "String to be searched:\n %s\n", string );
printf( " %s\n %s\n\n", fmt1, fmt2 );
pdest = strstr( string, str );
result = (int)(pdest - string + 1);
if ( pdest != NULL )
printf( "%s found at position %d\n", str, result );
else
printf( "%s not found\n", str );
}
String to be searched:
The quick brown dog jumps over the lazy fox
1 2 3 4 5
12345678901234567890123456789012345678901234567890
lazy found at position 36
Siehe auch
Zeichenfolgenbearbeitung
Gebietsschema
Interpretation von Multibytezeichensequenzen
strcspn
, , wcscspn
_mbscspn
_mbscspn_l
strcmp
, wcscmp
_mbscmp
strpbrk
, , wcspbrk
_mbspbrk
_mbspbrk_l
strrchr
, , wcsrchr
_mbsrchr
_mbsrchr_l
strspn
, , wcsspn
_mbsspn
_mbsspn_l
basic_string::find