[C++] C++에서의 입출력문과 using namespace 활용

목차
  1. iostream 헤더파일
  2. C++에서의 입력문과 출력문
  3. namespace(네임스페이스)과 using지시문
  4. 코딩
  5. 결과

1. iostream

iostream은 C++에 있는 입출력을 위한 헤더파일로, C++의 표준 라이브러리중 하나입니다.
Input / Output Stream에서 이름을 따왔다고 합니다.

2. C++에서의 입력문과 출력문

C에서 입력문은 scanf()이고 출력문은 printf() 였다면

C++에서의 입출력문은 

출력문 입력문
std::cout <<  std::cin >>

이렇게 표현하여 사용합니다.

cout은 화살표가 왼쪽 / cin은 화살표가 오른쪽이니 주의하시기 바랍니다.


3. 네임스페이스 (namespace)

C++에서 네임스페이스는 내부식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역으로, 코드를 논리 그룹으로 구성하고 특히 코드베이스에 여러 라이브러리가 포함된 경우 발생할 수 있는 이름 충돌을 방지하는데 사용됩니다.

네임스페이스의 모든 식별자에 대한 using 지시문을 사용하여 멤버에 액세스할 수 있습니다. 이때 헤더 파일의 코드는 항상 정규화된 네임스페이스 이름을 사용해야합니다.

 

using지시문

using지시문을 사용하면 모든 이름을 네임스페이스 이름 없이 명시적 한정자로 사용할 수 있습니다.
보통 using지시문은 네임스페이스에서 여러 식별자를 사용하는 경우 구현 파일(*.cpp)맨 위나 클래스 또는 함수 정의 내에 배치하여 사용합니다.

저같은 경우는 헤더파일 선언 바로 밑에 선언하여 사용합니다.

 

※주의 ※

헤더파일(*.h)에는 using 지시문을 쓰지 않는 것을 권합니다. 해당 헤더를 포함하는 모든 파일이 네임스페이스의 모든 식별자를 범위로 가져와서 이름 숨김 및 충돌 문제가 발생 할 수 있어 디버그하기 어렵습니다. 

 


4. 코딩

#include <iostream>

int main()
{
	int in_num;

	std::cout << "in_num값 입력: ";
	std::cin >> in_num;

	std::cout << in_num << std::endl;

	return 0;
}

main()함수

1. int in_num;

   => int 형 in_num 변수를 선언합니다.

2. std::cout << "in_num값 입력: ";

   => 콘솔에 "in_num값 입력: "을 출력하기 위해 cout으로 출력문을 작성한것입니다.

3. std::cin >> in_num;

   => cout 코드 바로 옆에 in_num값에 입력을 받도록 작성된 cin코드입니다.

4. std::cout << in_num << std::endl;

   => in_num값이 출력되고 std::endl은 C언어의 "\n"과 같은 줄바꿈 코드입니다.

std::endl은 "\n"로 바꿔 표현 할 수 있습니다. 개인적으로는 endl보다는 "\n"을 쓰기를 추천드립니다.

 

namespace로 cout 표현

위 코드에서 std::cout 으로 표현 된 것들은 using namespace std; 를 코드 위에 배치하여 선언하고 cout, cin, endl만으로 표현 할 수 있습니다.

ex) std::cout << "in_num값 입력: ";      =>     cout << "in_num값 입력: ";

 

4. 결과

이상입니다.