C++ iostream, 입출력 cin, cout, 네임스페이스
1. iostream
C에서 stdio.h에 있는 scanf, printf로 입출력을 하는데, C++도 가능하다.
근데 iostream에 있는 cin, cout을 주로 사용한다.
iostream은 C++ 표준 라이브러리에 속하며 C++ 언어의 입출력을 위한 헤더 파일
#include <iostream>
int main() {
int i, j;
std::cout << "Enter num_1: "; //문자열 출력
std::cin >> i; // 사용자에게 정수를 입력받아 i에 저장
std::cout << "Enter num_2: "; // 문자열 출력
std::cin >> j; // 사용자에게 정수를 입력받아 j에 저장
std::cout << " num_1 + num_2 = " << i + j << std::endl; //두 수의 합 출력
return 0;
}
2. 네임스페이스
cin, cout 앞에 std는 C++에 흔히 사용하는 count, cin, string, endl 등 여러가지 함수와 클래스, 객체, 유틸리티가 정의된 네임스페이스
std::는 std라는 네임스페이스에 접근할 때 사용
네임스페이스는 소속을 지정해주는 역할
내부 식별자(형식, 함수, 변수 등)에 범위를 부여해 여러 라이브러리를 포함할 때 이름이 충돌하는 것을 방지하려고 사용
코드의 양이 늘거나 다른 사람이 만든 코드를 가져다 쓸 때 이름이 같은 함수를 사용할 수도 있음
C++에서는 이를 구분할 수 있게 같은 이름이라도 소속된 네임스페이스가 다르면 서로 다른 것으로 취급함
std라는 네임스페이스를 통해 화면 입출력을 위한 cin, cout을 사용할 수 있는데, std::cin, std::cout으로 매번 앞에 이름 붙이기가 번거롭다면
#include <iostream>
using namespace std;
int main() {
int i, j;
cout << "Enter num_1: "; //문자열 출력
cin >> i; // 사용자에게 정수를 입력받아 i에 저장
cout << "Enter num_2: "; // 문자열 출력
cin >> j; // 사용자에게 정수를 입력받아 j에 저장
cout << " num_1 + num_2 = " << i + j << endl; //두 수의 합 출력
return 0;
}
using namespace std;를 쓰면, cin, cout등이 호출될 때는 std에 속한 것을 호출한다는 의미가 되어 std를 생략가능함
근데 귀찮더라도 특히 구조가 복잡하고 양이 많은 프로그램에서는 std::를 붙이는게 좋다고함
언제든지 예상치 못한 곳에서 충돌할 수 있기 때문
3. cout
printf는 문자열이나 정수, 부동소수점 등을 출력할 때 %d, %f, %s와 같은 형식 지정자를 사용해 출력해야함
반면 C++에서는 cout이라는 스트림객체를 사용하면 형식 지정자를 사용하지 않고도 문자열, 정수, 부동소수점 출력가능
cout은 << 연산자로 출력 대상을 전달
<< 은 정보의 흐름을 나타낸다
<<을 여러개 사용해서 출력을 여러개 할 수 있음
endl을 사용하면 개행문자 \n을 하나 출력하고 출력 버퍼를 비우는 역할도 수행하는 조작자(manipulator)
스트림을 비우면서 출력이 화면에 바로 나타나도록 함
std::cout << 출력1 << 출력2 << ... << std::endl;
4. cin
C에서 입력을 받을 때 scanf를 사용하지만, C++에서는 cin을 사용가능
cout과는 반대로 >> 라는 연산자 사용
std::cin >> 저장할 변수;
scanf와는 다르게 cin에서는 입력받을 데이터의 형식인 %c, %d같은 형식 지정자가 필요없다
cin은 scanf와는 다르게 입력된 데이터의 형식을 확인하고 잘못되었으면 오류를 발생시켜서 scanf보다 안전함
'프로그래밍 > C++' 카테고리의 다른 글
C++ 변수 유효 범위 (0) | 2025.01.23 |
---|---|
C++에서 사용하는 데이터 형식 (0) | 2024.12.30 |
C++ 프로그램 빌드 과정 (0) | 2024.11.24 |