Namespaces
Variants

std::ctype<CharT>:: scan_is, std::ctype<CharT>:: do_scan_is

From cppreference.net
헤더 파일에 정의됨 <locale>
public :
const CharT * scan_is ( mask m, const CharT * beg, const CharT * end ) const ;
(1)
protected :
virtual const CharT * do_scan_is ( mask m, const CharT * beg, const CharT * end ) const ;
(2)
1) Public 멤버 함수로, 가장 파생된 클래스의 protected virtual 멤버 함수 do_scan_is 를 호출합니다.
2) 문자 배열 [ beg , end ) 에서 분류 마스크 m 를 만족하는 첫 번째 문자를 찾습니다. 즉, is ( m, c ) true 를 반환하는 첫 번째 문자 c 를 찾습니다.

목차

매개변수

m - 검색할 마스크
beg - 검색할 문자 배열의 첫 번째 문자를 가리키는 포인터
end - 검색할 문자 배열의 끝 다음을 가리키는 포인터

반환값

마스크를 만족하는 첫 번째 문자에 대한 포인터를 [ beg , end ) 범위 내에서 반환하며, 해당 문자가 없을 경우 end 를 반환합니다.

예제

#include <clocale>
#include <iostream>
#include <iterator>
#include <locale>
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    std::wcout.imbue(std::locale("en_US.utf8"));
    auto& f = std::use_facet<std::ctype<wchar_t>>(std::wcout.getloc());
    // 첫 번째 문자까지 건너뛰기
    wchar_t s1[] = L"      \t\t\n  Кошка";
    const wchar_t* p1 = f.scan_is(std::ctype_base::alpha, std::begin(s1), std::end(s1));
    std::wcout << '\'' << p1 << "'\n";
    // 첫 번째 문자까지 건너뛰기
    wchar_t s2[] = L"123456789ネプネプ";
    const wchar_t* p2 = f.scan_is(std::ctype_base::alpha, std::begin(s2), std::end(s2));
    std::wcout << '\'' << p2 << "'\n";
}

출력:

'Кошка'
'ネプネプ'

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 152 C++98 do_scan_is 의 효과가 is ( m ) 로 언급되었으나,
is 에는 해당 오버로드가 존재하지 않음
is ( m, c ) 로 수정됨

참고 항목

주어진 분류에 맞는 첫 번째 문자를 시퀀스에서 찾으며, 분류 테이블을 사용합니다
( std::ctype <char> 의 public 멤버 함수)
[virtual]
주어진 분류에 맞지 않는 첫 번째 문자를 시퀀스에서 찾습니다
(virtual protected 멤버 함수)