본문 바로가기
C C++/C언어 기초

[C++] C++ 스타일 입출력 (입력, 출력, 문자열 입력)

by Go! Jake 2022. 7. 6.

C언어 입출력은 C++에서도 컴파일이 가능합니다. C++ 스타일의 입출력은 어떻게 구성이 되어 있는 지 살펴보도록 하겠습니다.

C와 C++ 입출력 차이점

C++ 출력에 대해 아래와 같은 예시로 시작하겠습니다.

우선 std::cout<<"출력 대상" 으로 표현 가능합니다.

#include <iostream>

int main(void)
{
	int num=10;
	std::cout<<"Hello World"<<std::endl;
	std::cout<<num<<std::endl;

	return 0;
}

C++입출력예시1
C++ 입출력

위와 같이 Hello World와 10이 출력되었습니다.

기존 C와 차이점은 아래와 같습니다.

- 입출력 서식을 정해 주지 않아도 된다. (e.g. %s, %c, %d 등 서식 지정 필요 없음)

- iostream을 include할 때 .h를 붙이지 않아도 된다. 표준 헤더파일 선언은 .h를 붙일 필요 없다.

- std::coutstd::endl로, 그리고 << 연산자를 통해 표현한다. std::cout은 출력 시작 형태, <<는 출력 대상이 시작되는 연산자, 그리고 std::endl는 개행이 온다.

 

응용하면 아래와 같은 예시가 있을 수 있습니다.

#include <iostream>

int main(void)
{
	std::cout<<"Hello World";
	std::cout<<"Hello World"<<std::endl;
	return 0;
}

 

C++입출력예시2
C++입출력2

첫 번째 "Hello World" 마지막에 std::endl를 붙이지 않아 개행이 되지 않았고, 다음 "Hello World"가 그대로 이어져 출력되었습니다.

 

입력은 다음과 같습니다.

std::cin>>'변수' 형태로 가능합니다. 아래 예시로 쉽게 이해할 수 있습니다.

#include <iostream>

int main(void)
{
	int num1;
	std::cout<<"숫자 입력:";
	std::cin>>num1;
	std::cout<<"숫자 출력:"; 
	std::cout<<num1;
	return 0;
}

C++입출력예시3
C++입출력3

입력을 30으로 하였을 때 정상적으로 30이 출력되는 것을 알 수 있습니다. 입력과 출력이 별도 서식이 필요 없기 때문에 미리 선언된 변수에만 입력 해 주면 됩니다.

변수 여러개에 입력이 필요한 경우 std::cin>>변수1>>변수2 형태로 입력을 요구할 수 있습니다.

문자열 입력

문자열도 크게 다르지 않고, char str[100] 등으로 선언하는 경우 따로 별도 서식 지정 없이 입력하면 됩니다.

다만 한 가지 주의할 점은...아래와 같은 예시를 볼 수 있습니다.

#include <iostream>

int main(void)
{
	char str[100];
	char str2[100];
	
	std::cin>>str>>str2;
	std::cout<<"출력: "<<str<<str2;
	return 0;
}

입력을 str과 str2로 두 가지 받는 경우입니다. 첫 번째 입력으로 Hello와 My PC로 넣으면 아래와 같은 결과가 나옵니다.

C++입출력예시4
C++입출력4

마지막 출력을 보면 HelloMy로 되어 있습니다. 'My PC'에서 뒤에 PC는 빠졌는 데, 이유는 스페이스, 즉 공백이 있기 때문입니다. 공백을 판단해서 나눕니다.

 

하지만, 하나의 행을 공백 상관 없이 모두 받고 싶다면, getline 함수를 이용하여 입력 받아야 합니다.

cin.getline, getline 함수를 이용할 수 있는 데, 각각 쓰임이 다릅니다.

 

cin.getline: char* 자료형 또는 char 배열을 받을 때 사용

getline: string 자료형을 받을 때 사용

 

cin.getline을 보겠습니다.

#include <iostream>
using namespace std;

int main(void)
{
	char str[100];
	char str2[100];
	
	cin.getline(str,100);
	cin.getline(str2,100);
	std::cout<<"출력: "<<str<<str2;
	return 0;
}

 

C++입출력예시5
C++입출력5

이렇게 하면 띄어쓰기 포함하여 문자를 전달받을 수 있습니다.

댓글