입출력 스트림 (Streams)
- `cin`: 표준 입력 스트림으로, 키보드에서 데이터를 입력받는 데 사용됩니다.
- `cout`: 표준 출력 스트림으로, 콘솔에 데이터를 출력하는 데 사용됩니다.
- `cerr`: 표준 오류 스트림으로, 오류 메시지를 출력하는 데 사용됩니다.
- `clog`: `cerr`와 비슷하지만 오류 메시지가 아닌 로그 메시지를 출력하는 데 사용됩니다.
ostream 클래스 (출력 스트림):
- `operator<<`: 삽입 연산자로, 데이터를 출력 스트림에 쓰는 데 사용됩니다. 예를 들어 `cout << "Hello, World!"`와 같이 사용됩니다.
- `flush`: 출력 버퍼를 비웁니다.
- `put(char)`: 문자를 출력 스트림에 직접 씁니다.
- `write(const char*, streamsize)`: 지정된 크기의 데이터를 출력 스트림에 바이트 단위로 씁니다.
istream 클래스 (입력 스트림):
- `operator>>`: 추출 연산자로, 데이터를 입력 스트림에서 읽어와 변수에 저장하는 데 사용됩니다. 예를 들어 `cin >> num`와 같이 사용됩니다.
- `get(char&)`: 문자를 입력 스트림에서 읽어옵니다.
- `getline(char*, streamsize)`: 한 줄을 읽어옵니다.
- `ignore(streamsize, char)`: 입력 스트림에서 특정 문자를 건너뛰거나 지정된 크기만큼 데이터를 무시합니다.
포맷 입출력:
포맷 입출력은 `iomanip` 헤더를 통해 제어됩니다.
- `setw(int)`: 출력 필드의 폭을 설정합니다.
cout << setw(5) << 42; // 출력: " 42"
```
- **`setprecision(int)`**: 소수점 이하 자릿수를 설정합니다.
```cpp
double pi = 3.14159265;
cout << fixed << setprecision(2) << pi; // 출력: "3.14"
- `setfill(char)`: 채움 문자를 설정합니다.
cout << setfill('*') << setw(8) << 42; // 출력: "******42"
삽입 연산자 (`<<`)와 추출 연산자 (`>>`) 오버로딩:
C++에서 사용자 정의 데이터 유형에 대한 입출력을 지원하려면 해당 데이터 유형에 대한 삽입 연산자와 추출 연산자를 오버로드해야 합니다. 이를 통해 사용자 지정 객체를 스트림에 쓰고 읽을 수 있습니다.
class Person {
public:
string name;
int age;
// 삽입 연산자 오버로딩
friend ostream& operator<<(ostream& os, const Person& person) {
os << "Name: " << person.name << ", Age: " << person.age;
return os;
}
// 추출 연산자 오버로딩
friend istream& operator>>(istream& is, Person& person) {
cout << "Enter name: ";
is >> person.name;
cout << "Enter age: ";
is >> person.age;
return is;
}
};
int main() {
Person person;
cin >> person; // 사용자로부터 입력 받음
cout << person; // 출력
return 0;
}
위의 예제에서 `Person` 클래스에 대한 삽입 연산자와 추출 연산자가 오버로드되어 사용자 정의 객체를 입출력할 수 있도록 만들어졌습니다.