[01-1] printf와 scanf를 대신하는 입출력 방식

김민성·2022년 7월 10일
post-thumbnail

C++에 대해서 공부해볼 것이다.
이전 파이썬과 C에서 공부하던 방식과 비슷하겠지만 또 다른 부분도 있을 것이다. 차근차근 알아가보자.

문자열 "Hello World"의 출력

HelloWorld.cpp

#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;

}
Hello World!
Hello World!
20A 3.14

관찰결과 1: 헤더파일 선언문 iostream

C언어에서는 print함수와 scanf함수 호출을 목적으로 헤더파일 <stdio.h>를 포함했으나, C++에서는

#include <iostream>

의 헤더파일 선언을 추가해야 한다.

관찰결과 2: std::out과 << 연산자를 이용한 출력

C언어의 printf 함수와 달리 %d, %s와 같은 서식문자를 이용해 별도의 출력포맷을 지정하지 않아도 된다.

std::out<< '출력대상';

관찰결과 3: << 연산자를 이용한 출력대상의 연이은 표현과 개행

std::out<<'출력대상1'<<'출력대상2'<<'출력대상3';

<< 연산자를 이용하면 위와 같이 둘 이상의 출력대상을 연이어서 출력 가능하다.
그리고 <<std::endl을 마지막에 붙여줌으로써 C언어에서의 \n과 같이 개행을 할 수 있다.

scanf를 대신하는 데이터의 입력

SimpleAdder.cpp

#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;
}
첫 번째 숫자 입력: 3
두 번째 숫자 입력: 5
덧셈결과: 8

관찰결과 1: 데이터의 입력에 사용되는 std::cin과 >> 연산자

std::cin>>'변수';

위와 같은 형식을 취하면 되고, '변수'의 위치에는 키보드로부터 입력 받은 데이터를 저장할 변수의 이름이 오면 된다.

관찰결과 2: C++의 지역변수 선언

다음 예제는 두 개의 정수를 입력 받아서 그 사이에 존재하는 정수들의 합을 계산하여 출력하는 프로그램이다. 예를 들어, 3과 7을 입력 받으면 4, 5, 6의 합을 계산해 출력한다.

BetweenAdder.cpp

#include <iostream>

int main(void) {
    int val1, val2;
    int result=0;
    std::cout<<"두 개의 숫자입력: ";
    std::cin>>val1>>val2;

    if(val1<val2) {
        for(int i=val1+1; i<val2; i++)
            result+=i;
    } else {
        for(int i=val2+1; i<val1; i++)
            result+=i;
    }

    std::cout<<"두 수 사이의 정수 합: "<<result<<std::endl;
    return 0;
}
두 개의 숫자입력: 3 7
두 수 사이의 정수 합: 15

8행을 보면 연이은 데이터의 입력 명령 또한 가능하다는 것을 알 수 있다.
12행과 17행을 통해 for문의 초기화 문장 내에서 변수 선언이 가능함도 알 수 있다.

배열 기반의 문자열 입출력

StringIO.cpp

#include <iostream>

int main(void) {
    char name[100];
    char lang[200];

    std::cout<<"이름은 무엇입니까?";
    std::cin>>name;

    std::cout<<"좋아하는 프로그래밍 언어는 무엇인가요?";
    std::cin>>lang;

    std::cout<<"내 이름은 "<<name<<"입니다.\n";
    std::cout<<"제일 좋아하는 언어는 "<<lang<<"입니다."<<std::endl;
    return 0;
}
이름은 무엇입니까? minseong
좋아하는 프로그래밍 언어는 무엇인가요? C++
내 이름은 minseong입니다.
제일 좋아하는 언어는 C++입니다.

9행과 12행을 보면 문자열의 입력 방식도 다른 데이터의 입력 방식과 큰 차이가 없다는 것을 알 수 있다.

profile
다양한 활동을 통해 인사이트를 얻는 것을 즐깁니다. 저 또한 인사이트를 주는 사람이 되고자 합니다.

0개의 댓글