스트림은 바이트 단위로 입출력한다. C++에서 스트림은 입력 스트림과 출력 스트림으로 나뉘는데 입력스트림은 키보드, 네트워크, 파일 등 입력 장치로부터 입력된 데이터를 순서대로 프로그램에 전달하는 객체이며, 출력스트림은 프로그램에서 출력한 데이터를 프린터, 하드디스크, 스크린, 네트워크, 파일 등과 같은 목적 장치로 순서대로 보내는 객체이다. C++ 응용 프로그램은 출력 장치에 직접 출력하는 대신 출력 스트림에 출력하고, 입력 장치로부터 직접 입력받는 대신 입력 스트림으로부터 입력받는다. C++ 의 표준 입력 스트림 객체는 cin, 표준 출력 스트림 객체는 cout이다.
C++ 입출력 스트림의 특징으로는 스트림이 데이터를 일시 저장하는 버퍼를 가지는 것이다.
ostream 은 << 연산자 외에 화면출력을 위한 다른 멤버 함수를 제공한다. 주요 멤버 함수로는 put, write, flush 가 있다.
#include <iostream>
using namespace std;
int main() {
cout.put('H'); //문자 하나를 스트림에 출력
cout.put('i');
cout.put('\n');
cout.put('C').put('+').put('+').put('\n'); //put함수를 연결하여 사용할 수 있다.
char str[] = "C++ programming";
cout.write(str, 5); //5글자만 출력
cout.flush(); //출력버퍼에 있는 문자들을 강제로 출력
}
Hi
C++
C++ p
istream 도 >> 연산자 외에 다양한 입력 멤버 함수를 가지고 있다. >> 연산자는 공백 문자키를 읽을 수 없지만 멤버 함수를 사용하면 공백 문자를 읽을 수 있다.
#include <iostream>
using namespace std;
int main() {
cout << "cin.get()으로 입력받기 >> ";
int ch1; //EOF가 -1로 선언되어 있어 int형으로 문자를 입력받음
while((ch1 = cin.get()) != EOF) { //EOF가 아닐동안 실행
cout.put(ch1); //입력받은 문자 출력
if(ch1 == '\n') //개행을 만나도 종료
break;
}
char ch2;
cout << "cin.get(char &)으로 입력받기 >> ";
while(1) {
cin.get(ch2); //위의 함수와 다르게 입력받기
if(cin.eof()) //EOF를 만나면 종료
break;
cout.put(ch2); //입력받은 문자 출력
if(ch2 == '\n') //개행을 만나도 종료
break;
}
char st1[10];
cout << "cin.get(char *s, int n)으로 입력받기 >> ";
cin.get(st1, 10); //최대 9개의 문자열을 읽고 마지막에 \0을 붙여 배열에 저장
cin.ignore(); //cin에서 개행문자를 만나서 종료되었을때 개행문자인 \n 을 비우기 위해
cout << st1 << endl;
char st2[50];
cout << "cin.getline()으로 입력받기 >> ";
cin.getline(st2, 50); //한라인의 문자열 읽기 49개까지 읽는다.
cout << st2 << endl;
}
cin.get()으로 입력받기 >> 첫번째
첫번째
cin.get(char &)으로 입력받기 >> 두번째
두번째
cin.get(char *s, int n)으로 입력받기 >> 세번째
세번째
cin.getline()으로 입력받기 >> 네번째
네번째