C++ 입출력 라이브러리
while (std::cin >> t) {
// int t
t 의 타입이 아니면 // int 형이 아니면
fail bit ON > bool false
>
std::cin.clear(); // 플래그들을 초기화 하고
std::cin.ignore(100, '\n'); // 개행문자가 나올 때 까지 무시한다
ios 객체에서 버퍼 처리함 ( 사용자 입력 > 버퍼 > 컴파일) > 플래그에 맞춰 실행
>>
1. 플래그 초기화
2. 버퍼 무시( 첫번째에는 최대 100개, 두번째로 '\n' 이 나오면 삭제)
> aaaaaaaa~~~
aaaaaaaa~~~
aaa
> 버퍼 3개 삭제
출력 진법 변경
std::cin.setf(ios_base::hex, ios_base::basefield);
1. hex 로 변경
2. basefield : 기존의 진법설정 초기화
or 함수 조작자
std::cin >> hex >> t;
//
std::ios_base& hex(std::ios_base& str);
>
istream& operator>>(ios_base& (*pf)(ios_base&));
operator>> :
pf : std::ios_base&를 반환하는 함수 포인터 (인자 : ios_base&) // 함수의 주소를 저장하는 포인터 !
> pf(*this) 를 호출
>>>
std::cin >> std::hex >> value;
std::hex ( 여기서 hex는 함수)
> operator>> 호출 , pf = hex
> std::cin.setf(std::ios::hex, std::ios::basefield); 로 바뀌어 실행
streambuf 클래스
std::string s;
std::cin >> s;
ex) hello world
hello > 1
공백 > 2
world > 3
>
cin >> s 는 cin 을 s만큼, 즉 공백때까지 이동
snextc 함수) 스트림 위치 지정자 한칸 전진 후 > 문자를 엿보기
읽기(get) <> 엿보기 (peek) // 한 글자
: 읽기 : 읽은 후 다음 읽기를 위해 미리 준비해둠 : 한칸 이동
엿보기 : 읽은 후 다음을 위한 위치 지정자 이동 X
> 다음 읽기때 엿본 문자를 읽을 수 있음
> peek 는 위치 이동 X > 다음읽을때 peek 를 읽고 > 다음으로 이동
파일입출력
1. 위치를 끝으로
2. 위치 저장
3. 그만큼의 메모리 만들고
4. 위치를 다시 처음으로
5. 메모리 만큼 읽어
// EOF 함수의 리턴은 true