C++ 17. 삽입,추출 연산자
title: “C++ 17. 삽입,추출 연산자” categories:
-
CspecialCharspecialChar
#C++ 17. 삽입,추출 연산자 : 네이버 블로그
출력 스트림에서 데이터를 출력하는 «연산자를 삽입 연산자라 하고
입력 스트림에서 데이터를 입력하느 »연산자를 추출 연산자라 한다
이 연산자들은 iostream 에 정의되어 있으며 가상 함수이기 때문에 사용자가 직접 변경할 수 있다
먼저 사용자 삽입 연산자에 대해 알아보자
사용자 삽입 연산자를 사용하기 위해서는 operator가 필요하다
ostream& operator « (ostream& stream,입력){
stream«입력;
return stream;
}
위는 사용자 삽입 연산자 정의의 기본적인 형태이다
만약 입력이 객체라면 객체의 맴버를 스트림에 삽입 할 수 있다
즉 point라는 클래스가 있고 x,y맴버를 가지고 있다 하자
그럼
ostream& operator « (ostream& stream, point a){
stream«a.x«a.y;
return stream;
}
라는 사용자 삽입 연산자를 정의할 수 있다
물론 스트림에 직접 문자열이나 문자를 입력할 수 도 있다
ex) stream« ’(‘ « a.x « ’,’ « a.y« ’)’;
이후 «연산자를 사용하는 방법은
point 객체 a가 있으면
cout« a;를 하면 된다
마찬가지로 사용자 추출 연산자는
istream& operator » (istream& stream, 출력){
stream»출력;
return stream;
}
의 형식으로 쓸 수 있다
이를 이용해 point를 받는 사용자 추출 연산자를 정의하면
istream& operator » (istream& stream, point &a){
cout« “x »”;
stream»a.x;
cout« “y »”;
stream»a.y;
return stream;
}
중요한 점은 매개변수가 point &a, 즉 주소를 받음으로서 함수 내에서 변경되면 외부의 객체도 변경된다
이점을 활용해 point 객체에 데이터를 쓸 수 있다
위의 예시들과 마찬가지로 사용자 조작자 또한 만들 수 있다
조작자는 «나 »을 통해 실행된다
즉 삽입 연산자는 ostream, 추출 연산자는 istream을 사용하는 점을 주의하며 사용자 조작자를 만들어야 한다
예시로 출력스트림에 endlendl조작자를 만든다고 하면
ostream& endlendl(ostream& stream){
stream«‘\n’«‘\n’;
return stream;
}
으로 정의 할 수 있다
마찬가지로 입력 스트림을 이용해서 조작자를 만들 수 있다
이름을 물어보는 question 조작자를 만들어보자
istream& question(istream& stream){
cout«“이름?”;
return stream
}
다양한 방법으로 입출력을 정의 할 수 있다