안녕하세요, katte입니다.
cout 객체에 관하여 정리하려고 하는데, 글이 너무 길어질 것 같아서 3~4개 정도의 게시글로 나누어서 올리도록 하겠습니다.
이번 글에서는 operator<<외에도 출력에 사용할 수 있는 멤버함수 put, write에 대해서 간략하게 정리하도록 하겠습니다.
ostream은 출력 데이터를 화면에 출력하기 위해 몇가지 멤버함수를 정의하고 있습니다.
우리가 출력에 주로 사용하는 operator<<는 ostream 객체의 레퍼런스를 반환하며, 매개변수의 자료형별로 오버로딩 되어있습니다. ostream 객체의 레퍼런스를 반환하기 때문에 우리가 항상 써왔듯이 << 오퍼레이터를 연달아서 사용해 출력할 수 있었던 것이죠.
operator<<외에 ostream이 출력을 위해 사용하는 멤버함수로는 대표적으로 put과 write가 있습니다.
먼저 put 멤버함수의 원형은 다음과 같습니다.
ostream& put(char ch)
사용 방식은 C언어에서의 putchar과 유사합니다.
매개변수로 char형의 문자 하나를 받고, ostream& 객체를 리턴합니다. 따라서 put 함수 역시 연달아서 함수를 사용해 출력할 수 있습니다.
put 함수의 매개변수로 int와 같은 수치형 변수를 사용한다면, put은 이 값을 아스키코드로 받아들여 그 값에 해당하는 아스키코드 문자를 출력하게 됩니다. (이런 행동은 c++ release 2.0 이전에서만 가능하다고 합니다.)
다음으로, write 멤버함수는 문자열을 출력하는 데에 사용됩니다. 그러나 operator<<와는 다르게 널 문자를 마주쳐도 출력을 멈추지 않습니다. write 함수는 매개변수로 출력할 문자의 수를 넘겨받고, 무조건 그 문자의 수만큼 출력합니다.
따라서 널 문자를 만나 문자열이 끝났다고 하더라도 넘겨받은 문자의 수만큼 출력하기 위해 문자열을 초과하여 출력하게 됩니다.
write 함수의 원형은 다음과 같습니다.
ostream& write(const char* str, streamsize count)
ostream& 객체를 리턴하므로 역시 연달아서 함수를 사용해 출력할 수 있습니다.
첫번째 매개변수로는 문자열의 주소를 전달받고, 두번째 매개변수로는 출력할 문자의 수를 전달받습니다.
write 함수는 주로 read 함수와 함께 파일 I/O에서 사용됩니다.
* 해당 글은 'C++ 기초 플러스 6판'을 참고하여 작성되었습니다.
'Computer > C++' 카테고리의 다른 글
[C++] cout 관련(3) - 출력 형식 지정 (0) | 2022.11.06 |
---|---|
[C++] cout 관련(2) - 출력 버퍼 비우기 (0) | 2022.11.06 |
[C++] 입출력과 스트림, 버퍼 (0) | 2022.10.26 |
[C++] cin 잘못된 입력 판별하기, 입력 버퍼 비우기 (0) | 2022.10.23 |
[C++] cctype 라이브러리 소개 (0) | 2022.10.23 |