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
TAGS.

Comments