2023. 3. 8. 21:41ㆍ공부/C++
입출력 함수 (cin, cout) / 네임스페이스
C++에는 <iostream> 이라는 입출력을 위한 표준 라이브러리가 존재한다.
C언어에서 printf(), scanf() 등과 같은 함수를 사용하기 위해 <stdio.h>를 선언하던 것과 비슷하다고 보면 된다.
우선 코드를 하나 살펴보자.
#include <iostream>
int main()
{
std::cout<<"안녕하세요.";
}
<실행결과>
살펴봐야하는 코드는 std::cout << "안녕하세요."; 부분이다.
여기서 cout은 iostream에 포함된 객체로 (때문에 cout을 사용하기 위해서는 iostream을 선언해야 한다.)
출력을 위해 사용된다.
C언어에서 printf()와 같은 역할을 한다고 보면 된다.
std::cout<<"출력할 내용";
네임스페이스(std) 접근지정자(::) 화면출력 객체 (cout) 스트림 연산자(<<) 출력할 내용("출력할 내용") ;
코드를 하나 더 살펴보자.
#include <iostream>
int main()
{
int x;
std::cout << "숫자를 입력하세요 -> ";
std::cin >> x;
std::cout << "당신이 입력한 숫자는 -> "<<x;
}
<실행결과>
이번에 살펴봐야 할 부분은 std::cin>>x; 이다.
cout이 출력을 담당한다면 cin은 c++에서 입력을 위해 사용된다.
cin을 사용하면 입력 버퍼에 값을 입력받은 후 Enter키를 입력했을 때 지정한 변수로 값을 전달한다.
std::cin>>x;
네임스페이스(std) 접근지정자(::) 화면출력 객체(cin) 스트림연산자(>>) 값을 전달받을 변수(x)
앞서 작성한 두 개의 코드에는 공통점이 있다.
그것은 바로 네임스페이스 std 이다.
네임스페이스(Namespace)는 C++ 표준에 도입되었는데,
여러 사람이 여러 소스를 하나의 프로젝트에서 컴파일 하여 발생하는 이름 중복 문제를 해결할 수 있다.
예시 코드를 하나 살펴보자.
#include <iostream>
void test() {
std::cout << "1번";
}
void test() {
std::cout << "2번";
}
int main()
{
test();
}
위 코드에는 test라는 동일한 이름을 가진 함수가 존재한다.
때문에 main 함수에 test 함수를 호출하여도 충돌이 발생한다.
#include <iostream>
namespace NumberOne{
void test() {
std::cout << "1번";
}
}
namespace NumberTwo {
void test() {
std::cout << "2번";
}
}
int main()
{
NumberOne::test();
}
하지만 namespace를 사용하여 각 함수를 NumberOne, NumberTwo 라는 이름으로 묶은 후,
NumberOne::test()를 통해 접근해준다면...
무사히 NumberOne에 소속된 test함수가 실행되는 모습을 볼 수 있다.
namespace 이름 { } //네임스페이스 생성
namespace명::요소 //네임스페이스내 요소에 접근
그렇다면 std와 네임스페이스가 무슨 관련이 있냐?
std는 바로 C++에서 제공하는 표준 네임스페이스다.
우리가 사용한 cout과 cin은 std에 소속되어 있으며 using을 사용하여 생략도 가능하다.
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "숫자를 입력하세요 -> ";
cin >> x;
cout << "당신이 입력한 숫자는 -> "<<x;
}
using name space std를 통해 std를 하나하나 입력하는 수고를 덜 수 있게 되었다.
'공부 > C++' 카테고리의 다른 글
[C++] 생성자와 소멸자 (0) | 2023.04.02 |
---|---|
[C++] 클래스(class)와 객체(instance) (0) | 2023.03.19 |
[C++] 문자열 (cstring과 string) (0) | 2023.03.12 |
[C++] C++의 특징 요약 (0) | 2023.03.08 |