Namespaces
Variants

std:: strcspn

From cppreference.net
ヘッダーで定義 <cstring>
std:: size_t strcspn ( const char * dest, const char * src ) ;

dest が指すバイト文字列の先頭部分のうち、 src が指すバイト文字列に含まれ ない 文字のみで構成される最大セグメントの長さを返します。

関数名は「complementary span」を意味します。

目次

パラメータ

dest - 解析対象のヌル終端バイト文字列へのポインタ
src - 検索対象の文字を含むヌル終端バイト文字列へのポインタ

戻り値

src が指すバイト文字列に含まれない文字のみを含む最大の初期セグメントの長さ。

#include <cstddef>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <string>
int main()
{
    std::string s = "abcde312$#@";
    const char* invalid = "*$#";
    const std::size_t valid_len = std::strcspn(s.c_str(), invalid);
    if (valid_len != s.size())
    {
        std::cout << std::quoted(s)
                  << " は位置 "
                  << valid_len << " から無効な文字を含んでいます\n"
                  << std::string(valid_len + 1, '-') << "^\n";
    }
}

出力:

"abcde312$#@" contains invalid chars starting at position 8
---------^

関連項目

別のバイト文字列に含まれる文字のみで構成される最大の先頭部分の長さを返す

(関数)
別のワイド文字列に 含まれない 文字のみで構成される最大の先頭部分の長さを返す

(関数)
区切り文字セットからの任意の文字の最初の位置を検索する
(関数)
文字の最初の出現を検索する
( std::basic_string<CharT,Traits,Allocator> の公開メンバ関数)