Namespaces
Variants

wcsstr

From cppreference.net
< c ‎ | string ‎ | wide
ヘッダーで定義 <wchar.h>
wchar_t * wcsstr ( const wchar_t * dest, const wchar_t * src ) ;
(1) (C95以降)
/*QWchar_t*/ * wcsstr ( /*QWchar_t*/ * dest, const wchar_t * src ) ;
(2) (C23以降)
1) ワイド文字列 dest が指す文字列内で、ワイド文字列 src の最初の出現を検索します。終端のnull文字は比較されません。
2) 型ジェネリック関数で (1) と同等の機能を持つ。 T を修飾子のないワイド文字オブジェクト型とする。
  • dest の型が const T * の場合、戻り値の型は const wchar_t * となる。
  • それ以外の場合、 dest の型が T * の場合、戻り値の型は wchar_t * となる。
  • それ以外の場合、動作は未定義となる。
これらのジェネリック関数のマクロ定義が抑制されて実際の関数にアクセスする場合(例えば ( wcsstr ) や関数ポインタが使用される場合)、実際の関数宣言 (1) が可視となる。

目次

パラメータ

dest - 検査対象のnull終端ワイド文字列へのポインタ
src - 検索対象のnull終端ワイド文字列へのポインタ

戻り値

見つかった部分文字列の最初の文字へのポインタを dest で返す。該当する部分文字列が見つからない場合はヌルポインタを返す。 src が空文字列を指している場合は、 dest が返される。

#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main(void)
{
    setlocale(LC_ALL, "ru_RU.UTF-8");
    wchar_t str[5][64] = {
        L"Строка, где есть подстрока 'но'.",
        L"Строка, где такой подстроки нет.",
        L"Он здесь.",
        L"Здесь он.",
        L"Его нет."
    };
    for (size_t i = 0; i < 5; ++i) {
        if (wcsstr(str[i], L"но")) {
            wprintf(L"%ls\n", str[i]);
        }
    }
}

出力:

Строка, где есть подстрока 'но'.

参考文献

  • C11標準 (ISO/IEC 9899:2011):
  • 7.29.4.5.6 wcsstr関数 (p: 437)
  • C99標準 (ISO/IEC 9899:1999):
  • 7.24.4.5.6 wcsstr関数 (p: 383)

関連項目

(C95)
ワイド文字列内でワイド文字が最初に現れる位置を検索
(関数)
(C95)
ワイド文字列内でワイド文字が最後に現れる位置を検索
(関数)