C에서 입력 스트림으로 작업할 때 'cin'을 사용하여 사용자 입력을 읽는 것이 일반적입니다. 기본적으로 'cin'은 공백 문자를 단어나 토큰을 구분하는 구분 기호로 처리합니다. 다른 구분 기호를 사용해야 하는 경우 어떻게 해야 합니까?
C 표준 라이브러리 API는 'cin'에 대한 구분 기호를 변경하는 방법을 명시적으로 제공하지 않지만 'std::를 사용하여 이를 달성할 수 있습니다. ios_base::imbue' 함수.
'std::ios_base::imbue'를 사용하면 사용자 정의 'ctype' 패싯을 입력에 추가할 수 있습니다. 개울. Ctype 패싯은 특정 로케일에 대한 문자 분류 동작을 정의합니다.
다음은 구분 기호를 콜론(':') 문자로 변경하는 방법을 보여주는 예입니다.
#include <locale> #include <iostream> struct colon_is_space : std::ctype<char> { colon_is_space() : std::ctype<char>(get_table()) {} static mask const* get_table() { static mask rc[table_size]; rc[':'] = std::ctype_base::space; rc['\n'] = std::ctype_base::space; return &rc[0]; } }; int main() { using std::string; using std::cin; using std::locale; cin.imbue(locale(cin.getloc(), new colon_is_space)); string word; while(cin >> word) { std::cout << word << "\n"; } }
이 예에서는 , 사용자 정의 'ctype' 패싯 'colon_is_space'가 생성됩니다. 이 패싯은 콜론(':') 및 줄 바꿈('n') 문자를 공백으로 분류합니다.
이 사용자 정의 패싯을 사용하여 입력 스트림에 로케일을 주입함으로써 'cin'에 대한 구분 기호를 다음과 같이 효과적으로 변경합니다. 콜론. 결과적으로 추출 연산자(>>)를 사용하여 입력을 읽을 때 콜론을 구분 기호로 처리합니다.
이 기술은 공백이 아닌 문자를 구분 기호로 사용하는 입력 형식을 처리하는 데 사용할 수 있습니다. .
위 내용은 C에서 `cin` 입력의 구분 기호를 어떻게 변경할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!