업데이트:

태그: ,

카테고리:

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);
}


  1. 헤더선언
#include <iostream>

c++에선 표준입출력을 하기 위해선 iostream헤더를 선언해야한다.
C언어에선 표준 헤더파일인 stdio.h를 선언하면 표준입출력을 할 수 있는데,
.h가 없는 이유는 c++에선 표준 헤더파일 선언에서는 확장자를 생략하기로 약속한다.


  1. std::cout

출력하기위한 기본적인 형태는 아래와 같다.

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

c++은 별도의 출력포맷을 지정하지 않아도, 데이터의 성격에 따라 적절한 출력이 이뤄진다.


  1. << 연산자

둘 이상의 출력대상을 연이어서 출력한다.

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>>'변수';

변수의 위치에는 입력받은 데이터를 저장할 변수의 이름이온다.
출력과 동일하게, 데이터의 성격에 따라 알아서 적절하게 저장된다.


  1. c++의 지역변수 선언

원래 C에선 함수 정의시, 지역변수 선언이 항상 맨 위에 있어야했다.
(단 C의 새로운 표준에선 이를 허용한다)

그러나 C++의 모든 컴파일러는 지역변수 선언 위치에 제한을 두지 않는다.


또한, for문의 초기화 문장 내에서 변수선언도 가능한데,
아래와같은 코드는

int i = val1 + 1;
for (i; i < val2; i++)

아래처럼 바꿀 수 있다.

for (int i = val1 + 1; i < val2; i++)
  1. 연속적인 데이터의 입력
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만큼의 바이트가 할당되어있다.
각각 입출력대상은 문자열이댜.

  1. 터미널 상으로 사용자가 값 입력.
  2. 해당 값을 공백으로 구분해 자료형에 저장.

이런 과정으로 배열에 값이 입력된다.

댓글남기기