개발/C, C++

[C++] cin, cout을 이용한 입출력

huiyu 2018. 11. 25. 11:24

1. Hello World 출력 샘플

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int main(void)
{
  int num=20;
  std::cout<<"Hello World!"<<std::endl;
  std::cout<<"Hello "<<"World!"<<std::endl;
  std::cout<<num<<' '<<'A';
  std::cout<<' '<<3.14<<std::endl;
  return 0;
}
cs

(1) 헤더파일 선언문 #include <iostream>
   : 위 코드의 std, cout, endl 등의 입력 및 출력에 관한 일을 하기 위한 C++ 헤더

 * C++헤더가 .h형태가 아닌 이유
 C++ 헤더 역시 C언어와 마찬가지로 .h로 만들어져있다.
그러나 C++에서는 프로그래머가 정의하는 헤더가 아닌, 표준 헤더파일의 선언에서는 확장자를 생략하기로 약속되어 있다.

생략한 이유는 아래와 같다.
  1) 과거의 표준 라이브러리와 새로운 표준 라이브러리의 구분
  2) 새로운 표준 라이브러리를 사용하는 형태로 소스코드를 쉽게 변경할 수 있도록

-> 때문에 <iostream.h>는 과거 표준 입출력 라이브러리 및 헤더를 의미하는 것으로 통용되고,
  <iostream>은 새로운 표준 입출력 라이브러리 및 헤더를 의미하는 것으로 통용이 된다.
  C++ 컴파일러는 점차 <iostream.h>를 지원하지 않는 추세로 접어들었다.


(2) std::cout과 << 연산자를 이용한 출력
 
: std::cout<< '출력대상'

 -> 출력대상엔 무엇이든 올 수 있다. 정수,실수, 문자열 그리고 변수도 올 수 있다.
  C언어와 다르게 %d, %s와 같은 서식문자를 이용해서 별도의 출력포맷을 지정하지 않아도 데이터의 성격에 따라 적절한 출력이 이뤄진다.

(3) <<연산자를 이용한 출력대상의 연이은 표현과 개행
  : std::cout<<'출력대상1'<<'출력대상2'<<'출력대상3<<std::endl;

 -> <<연산자를 이용해서 둘 이상의 데이터 출력을 명령하는 것이다.
 -> <<연산자를 이용한 std::endl의 출력은 개행으로 이어진다.


2. scnaf를 대신하는 데이터의 입력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int main(void)
{
  int val1;
  std::cout<<"첫 번째 숫자 입력: ";
  std::cin>>val1;
 
  int val2;
  std::cout<<"두 번째 숫자 입력: ";
  std::cin>>val2;
 
  int result=val1+val2;
  std::cout<<"덧셈결과: "<<result<<std::endl;
 
  return 0;
}
cs

(1) 데이터 입력에 사용되는 std::cin과 >>연산자
 
: std::cin>>'변수';

  -> '변수의 위치엔 키보드로부터 입력 받은 데이터를 저장할 변수의 이름이 오면 된다.
  -> C++에선 데이터의 입력도 데이터의 출력과 마찬가지로 별도의 포맷 지정이 필요없다.

(2) C++의 지역변수 선언

 -> C언어 프로그램을 작성하는 경우 함수를 정의함에 있어 지역변수 선언이 항상 제일 먼저 등장했어야만 했다.
   그러나 C++의 지역변수 선언은 함수 내 어디든 삽입이 가능

for문의 초기화 문장 내에서 변수 선언이 가능하다.

  for(int num=0; num; num++){...}

 * C언어도 새로운 표준에서는 C++ 과 마찬가지로 변수선언의 위치에 제한을 두지 않는다.
  그러나 아직도 대부분 컴파일러는 이를 허용하지 않는다.


(3) 데이터의 연속 입력
 :  std::cin>>'변수1'>>'변수2'

 - 데이터의 경계는 탭, 스페이스 바, enter 키의 입력과 같은 공백에 의해 나눠진다.


*문자열 입/출력
 char str[100];
 std::cin>>str;
 std::cout<<str<<endl;


[출처] 윤성우의 열혈 C++ 프로그래밍 1.C언어 기반의 C++1, 01-1 printf와 scanf를 대신하는 입출력 방식

728x90
반응형