C++/모두의코드

7장

twoweeks-within 2025. 2. 4. 08:55

C++ 입출력 라이브러리

 

ios_base : 기반클래스

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

    

'C++ > 모두의코드' 카테고리의 다른 글

9장  (0) 2025.02.12
8-1 장  (0) 2025.02.09
6장  (0) 2025.02.02
5장 // 5.3 뒷부분은 복습때  (0) 2025.02.01
4장 이어서..  (0) 2025.01.31