>백엔드 개발 >C++ >C에서 `cin` 입력의 구분 기호를 어떻게 변경할 수 있습니까?

C에서 `cin` 입력의 구분 기호를 어떻게 변경할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-05 16:39:12830검색

How Can I Change the Delimiter for `cin` Input in C  ?

C에서 'cin' 입력에 대한 구분 기호 수정

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 &amp;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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.