C++ 의 입출력 방식
우리는 어떠한 언어든 처음 배울 때 Hello World를 출력하는것을 우선으로 합니다.
java에서는 System.out.println(); 을 이용한 출력
c에서는 printf();를 이용한 출력
c#에서는 Console.Write();를 이용한 출력
위와 같이 각 언어별로 출력을 하기위한 출력문은 각각 다르다.
C++은 C 와 비슷한 실행 방식을 가지고 있다.
여기서 C++은 C와 다른 확장자인 .c가 아닌 .cpp를 사용한다.
그리고 C++ 만의 문법 규칙을 적용한다.
간단하게 C++에서 Hello World를 출력해보자.
#include <iostream>
int main(void)
{
std::cout << "Hello World" << std::endl;
}
위의 소스코드는 Hello World 라는 출력값을 지닌다.
실행 결과 : Hello World 인것이다.
여기서 분석을 하게된다면 특징을 몇가지 살펴볼 수 있다.
1.#include <iostream> 헤더 파일 선언문
2.std::cout 와 std::endl 그리고 <<
이를 보다 자세히 설명하여 쉽게 이해할 수 있도록 돕겠다.
1. #include <iostream>
우리는 기존에 C언어에서 printf 함수와 scanf 함수를 호출하기 위해 #include <stdio.h> 헤더 파일을 추가했었다.
이처럼 C++ 에서도 입출력 관련 함수를 호출하기 위해 <iostream> 이라는 헤더파일을 추가하기 위한 선언문을 작성해야한다.
이로인해 곧 알게되겠지만 C++도 C와 다름없이 헤더파일과 .cpp 파일로 분리된다는것을 어렴풋이 짐작할 수 있다.
2. std::cout 와 std::endl
혹시 Java 혹은 C#을 배우고 온 독자라면 std , cout, endl 들의 설명을 보다 쉽게 이해 할 수 있을것이다.
java에 빗대어 설명을 하자면 java는 java7에 표준으로 포함되어있는 java.rang 패키지에 속해있는 System 클래스의
out.println() 메소드를 이용하여 출력문을 제어합니다.
System.out.println("Hello World"); // 자바에서의 출력문
위와 같은 방식으로 Hello World를 출력할 수 있죠.
C++에서도 같은 개념이라고 생각하시면됩니다.
입출력을 제어 할 수 있는 표준 함수들을 이용하기 위해 #include <iostream>을 선언하여 표준 함수들을 읽는겁니다.
또한 C++은 C와 다르게 표준 헤더파일의 선언에서는 확장자를 생략하기로 약속되어 있기 때문에 iostream에 .h가 붙지않습니다.
이제 std::cout와 std::endl 이 무엇을 하는지 알아보겠습니다.
std::cout는 <<과 연계하여 출력을 합니다.
std::endl는 개행을 합니다.
출력을 위해서는 std::cout << ' 출력 대상' ; 을 지정 해줘야합니다.
하지만 C언어와는 다르게 변수의 자료형이 달라도 서식문자를 지정하지 않음에도 출력이 이루어짐을 알 수 있습니다.
그리고 연이은 개행과 표현이 가능하죠.
#include <iostream>
int main(void){
int num = 20;
std::cout << "출력1" << "print string" << "helloworld" << std::endl;
std::cout << "hi" << "im basasakk" << num ;
}
위와 같은 방식으로 말이죠.
그리고 std::endl은 << 연산자를 이용해 다음 출력은 개행으로 이루어져라 라는 뜻입니다.
한마디로 한줄 띄운 후 출력하라 라는 말과 같습니다.
System.out.println / Console.WriteLine과 같은 말이지요.
이렇게 c++에서의 출력문 작성은 끝이납니다.
하지만 우리는 std는 무엇이고 :: 이 무엇이며 <<연산자가 무엇인지 자세히 모릅니다.
이는 차차 알게될 예정이니 사용할 줄만 알고 차후에 개념을 정리하시면됩니다.
이제 출력을 알아볼까요?
C++에서는 C의 Scanf를 대신하여 std::cin이 등장합니다.
std:: cin 에 대해 설명하기전 예제를 보고 선 이해를 진행해봅시다.
#include <iostream>
int main(void)
{
int num = 0;
std::cout << "num 변수에 정수 입력: ";
std::cin >> num;
return 0;
}
여기에서 우리는 세가지 특성을 알 수 있습니다.
1. 입력에서도 iostream이 필요하다.
2. std::cin 에서는 std::cout와 다르게 연산자가 >> 이다.
3. 출력과 동일하게 입력에도 자료형의 별도의 지정이 필요가 없다.
예제에서 알 수 있듯이 우리는 데이터를 입력하기 위해 다음과 같은 구문을 취해야합니다.
std::cin >> '변수 or 할당된 데이터 공간' ;
예를들어 우리가 Variable 이라는 변수에 데이터를 입력하기 위해서
std::cin >> Variable ;
위와 같이 작성을 해야 한다는점을 깨달을 수 있습니다.
또한 연속적인 데이터 입력도 가능합니다.
std::cin >> '변수1' >> '변수2' >> '변수3' ;
위와 같이 말이죠.
이제 이 모든것을 활용한 예제를 최종적으로 작성 해보고 종료하겠습니다.
#include <iostream> // 입출력을 관리하기 위해 iostream 헤더 파일 선언
int main(void) // main 함수 선언
{
int age = 0; // 나이 정보를 담기 위한 정수형 변수
char name[200]; // 이름을 담기 위해 선언한 문자열을 담기위한 문자형 배열 변수
char favoriteLang[200];
int career = 0;
std::cout << "몇살 이신가요?" << std::endl;
std::cin >> age;
std::cout << "이름이 무엇인가요?" << std::endl;
std::cin >> name;
std::cout << "좋아하는 프로그래밍 언어가 무엇인가요?" << std::endl;
std::cin >> favoriteLang;
std::cout << "프로그래밍에 몸담은지 몇년되셨나요?" << std::endl;
std::cin >> career;
std::cout << "내 나이는 " << age << " 입니다. " << std::endl << "내 이름은 " << name << " 입니다. " << std::endl << "좋아하는 언어는 " << favoriteLang << " 입니다. " << std::endl << "경력은 " << career << "년 입니다.";
// 한줄에 개행문을 여러번 넣을 수 있음을 증명하는 출력 구조
return 0;
}
이로써 C++에서의 제일 중요한 기본기인 입출력에 대한 정리가 끝났습니다.
오탈자 / 개념 수정 등의 댓글 제보 성실히 받겠습니다.
감사합니다.