C의 cin에 대한 사용자 정의 구분 기호
문제:
리디렉션 후 cin을 사용할 때 (cin.rdbuf(inF.rdbug())를 통해) 파일 스트림으로 공백 문자에 도달할 때까지 읽습니다. 대체 구분 기호를 사용할 수 있습니까?
답변:
예, cin(또는 다른 std::)에 대한 단어 간 구분 기호를 변경할 수 있습니다. istream) std::ios_base::imbue 및 사용자 정의 ctype 패싯을 사용합니다.
사용자 정의 패싯 콜론(:)과 개행 문자를 공백 문자로 처리하는 cin은 필드가 콜론으로 구분되는 /etc/passwd와 같은 파일을 읽는 데 사용할 수 있습니다.
#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"; } }
이 사용자 정의 패싯을 입력 스트림에 적용하면 cin 이제 콜론과 개행 문자를 단어 구분 기호로 해석하여 /etc/passwd와 같은 파일에서 필드를 분리할 수 있습니다.
위 내용은 C의 `cin`은 사용자 정의 구분 기호를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!