문자열 "Hello World"의 출력
예제
#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;
}
위의 소스코드와 실행결과를 함게 관찰하면, 출력에 관한 몇 가지 특성을 파악할 수 있음.
- 헤더파일 선언문 #include <iostream>
- std::cout과 <<을 이용한 출력
- std::endl을 이용한 개행
1. 헤더파일 선언문 #include <iostream>
C언어에서는 입출력을 위한 printf 함수와 scanf 함수의 호출을 목적으로 헤더파일 <stdio.h>를 포함했다면,
C++에서는 입출력에 관련된 일을 하기 위해서 다음 형태의 헤더파일 선언을 추가해야 한다.
#include <iostream>
위의 명령이 정의되어 있지 않다면 Std, cout, endl... 등등의 함수를 사용하지 못함.
"C++의 헤더파일에는 확장자가 없음?"
헤더파일의 확장자는 C언어와 마찬가지로 .h
그러나 C++에서는 프로그래머가 정의하는 헤더파일의 선언이 아닌, 표준 헤더파일의 선언에서는 확장자를 생략하기로 약속
[참고]
과거에는 <iostream.h>와 같이 확장자를 표기하였음
그러나 새로운 C++ 표준의 도입으로 인해 C++ 표준 라이브러리에도 적지 않은 변화가 생김
그리고 다음 두 가지 이유로 새로운 표준 라이브러리의 사용을 목적으로 하는 헤더파일의 포함에는 확장자를 생략
- 과거의 표준 라이브러리와 새로운 표준 라이브러리의 구분
- 새로운 표준 라이브러리를 사용하는 형태로 소스코드를 쉽게 변경할 수 있도록
2. std::cout과 << 연산자를 이용한 출력
출력을 위해 다음의 형태
std::cout << "출력대상";
- 출력대상의 위치에는 무엇이든 올 수 있다.
- 정수와 실수를 비롯해서 문자열, 그리고 변수도 올 수 있다. (서식 지정자로 출력하는 C언어에 비해 훨씬 자유로움)
3. << 연산자를 이용한 출력
- <<도 연산자다.
- 연산자를 이용하면 둘 이상의 출력대상을 연이어서 출력 가능
std::cout << '출력 대상1' << '출력 대상2' << '출력대상3';
- std::endl : <<연산자를 이용한 std::endl의 출력은 개행으로 이어진다.
scanf를 대신하는 데이터의 입력
두 개의 숫자를 입력 받고, 입력 받은 숫자의 덧셈 결과를 출력하는 예제
#include <iostream>
int main(void)
{
int val1;
std::cout << "첫 번째 숫자입력: ";
std::cin >> val1; // 키보드로부터 정수를 하나 입력 받아서 변수 val1에 저장
int val2;
std::cout << "두 번째 숫자입력: ";
std::cin >> val2;
int result = val1 + val2;
std::cout << "덧셈결과: " << result << std::endl;
return 0;
}
- 키보드로부터 데이터 입력에서 헤더파일 선언문 #include <iostream>이 필요하다.
- 키보드로부터의 데이터 입력에는 std::cin과 >> 연산자가 사용된다.
- 변수의 선언은 어디서든 가능하다.
1. 데이터의 입력에 사용되는 std::cin과 >> 연산자
데이터 입력을 위해 다음에 형식
std::cin>>'변수'
'변수'의 위치에는 키보드로부터 입력 받은 데이터를 저장할 변수의 이름이 오면 됨.
std::cin>>val1;
키보드로부터 정수를 하나 입력 받아서 변수 val1에 저장
정수형 덧셈 말고, 실수형 덧셈을 하고자할 때 자료형 정의 형태만 int에서 double로 바꿔주면 됨.
C++에서는 데이터의 입력도 데이터의 출력과 마찬가지로 별도의 포맷 지정이 필요 없기 때문
문자열로 입력과 출력을 한다고 가정
C언어
char str[100];
scanf("%s", str);
C++
char str[100];
std::cin>>str;
2. C++의 지역변수 선언
C언어로 프로그램을 작성하는 경우에는 함수를 정의함에 있어서 지역변수의 선언이 항상 제일 먼저 등장해야만 했다.
그러나 C++의 지역변수 선언은 함수 내 어디서든 삽입이 가능하다.
참고로 C언어도 새로운 표준에서는 C++과 마찬가지로 변수선언의 위치에 제한을 두지 않는다.
그러나 대부분의 컴파일러는 이를 허용하지 않는다고 함
반면 C++의 모든 컴파일러는 지역변수의 선언 위치에 제한을 두지 않는다.
예제
#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;
}
std::cin >> '변수 1' >> '변수 2';
위 구조로 연속적인 데이터의 입력을 요구할 수 있다는 사실
첫 번째 입력되는 정수 : '변수 1'
두 번째 입력되는 정수 : '변수 2'
첫 번째 정수와 두 번째 정수의 경계는 탭, 스페이스 바, Enter 키의 입력과 같은 공백에 의해 나눠진다.
for문의 초기화 문장 내에서 변수 선언이 가능함
int num;
for(num=0; num<10; num++){...}
위 코드는 아래와 같이 한 줄로 선언이 가능하다
for(int num=0; num<10; num++){...}
배열 기반의 문자열 입출력
#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::endl 개행의 역할과 같음
std::cout << "내가 좋아하는 언어는 " << lang << "입니다." << std::endl;
return 0;
}
참고 : [윤성우 열혈 C++ 프로그래밍] - 대부분의 내용 및 코드는 이 책에서 개인 공부 정리 목적으로 참고하였습니다.
'Language&Framework&Etc > C++' 카테고리의 다른 글
C언어 기반의 C++(01-4) 인라인(inline) 함수 (0) | 2020.12.20 |
---|---|
C언어 기반의 C++(01-2) 함수 오버로딩(Function Overloading) (0) | 2020.12.19 |
1-5 이름공간(namespace)에 대한 소개 추가(함수 선언 정의) (0) | 2020.11.18 |
1-5 이름공간(namespace)에 대한 소개 (0) | 2020.11.18 |
1-4 인라인(inline) 함수 (0) | 2020.11.18 |