[C++] C++을 다뤄봅시다
REF : 윤성우의 열혈 C++
42서울을 진행하면서 계속 C를 사용해야한다.
간만에 알고리즘 풀려고 파이썬을 보니 너무 헷갈린다…
그러니, 언어를 하나로 통합해서 공부해보도록하자.(난 머리가 안좋으니…)
Hello World로 C와 C++비교
데이터 출력
- 출력 예제
#include <iostream>
int main()
{
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>
c++에선 표준입출력을 하기 위해선 iostream
헤더를 선언해야한다.
C언어에선 표준 헤더파일인 stdio.h
를 선언하면 표준입출력을 할 수 있는데,
.h
가 없는 이유는 c++에선 표준 헤더파일 선언에서는 확장자를 생략하기로 약속
한다.
- std::cout
출력하기위한 기본적인 형태는 아래와 같다.
std::cout<< '출력대상';
c++은 별도의 출력포맷을 지정하지 않아도, 데이터의 성격에 따라 적절한 출력
이 이뤄진다.
<<
연산자
둘 이상의 출력대상을 연이어서 출력한다.
std::cout<<`출력대상1`<<`출력대상2`<<`출력대상3`;
따라서,
std::cout<<"Hello " << "World!" << std::endl;
위 코드는 Hello
와 World!
를 출력하고, 마지막에 개행문자를 출력하라는 의미이다.
데이터 입력
- 입력 예제
#include <iostream>
int main()
{
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
{
int i = val2 + 1;
while (i < val1)
{
result += i++;
}
}
std::cout<<"두 개 숫자 사이 값들의 합: "<< result << std::endl;
return (0);
}```
<br>
1. std::cin
키보드 데이터 입력의 기본형태
```c
std::cin>>'변수';
변수의 위치에는 입력받은 데이터를 저장할 변수의 이름이온다.
출력과 동일하게, 데이터의 성격에 따라 알아서 적절하게 저장된다.
- c++의 지역변수 선언
원래 C에선 함수 정의시, 지역변수 선언이 항상 맨 위에 있어야했다.
(단 C의 새로운 표준에선 이를 허용한다)
그러나 C++의 모든 컴파일러는 지역변수 선언 위치에 제한을 두지 않는다.
또한, for문의 초기화 문장 내에서 변수선언도 가능한데,
아래와같은 코드는
int i = val1 + 1;
for (i; i < val2; i++)
아래처럼 바꿀 수 있다.
for (int i = val1 + 1; i < val2; i++)
- 연속적인 데이터의 입력
std::cin>>val1>>val2;
연속적인 데이터 출력이 가능하듯, 연속적인 데이터 입력도 가능하다.
입력시, 두 변수가 터미널 상으로 나눠지는 기준은
탭, 스페이스 바, 엔터 와 같은 공백에 의해 나눠진다.
배열 기반의 문자열 입출력
- 예제
#include <iostream>
int main()
{
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;
}
name과 lang에 각각 100, 200만큼의 바이트가 할당되어있다.
각각 입출력대상은 문자열이댜.
- 터미널 상으로 사용자가 값 입력.
- 해당 값을 공백으로 구분해 자료형에 저장.
이런 과정으로 배열에 값이 입력된다.
댓글남기기