본문으로 바로가기

[C++]C++? (2)

category 프로그래밍/C++ 2017. 2. 7. 20:37
728x90
반응형

안녕하세요. letitkang입니다.


C++ 2회 포스팅 시작하겠습니다. 바로 본론으로 들어가겠습니다.


'윤성우의 C++ 열혈강의'를 보고 공부하고 있습니다.


 

 

 



지난 포스팅에서는 간단히 C++의 소스 코드를 보고, C와의 차이점을 분석 해보았습니다.


이번에는 지난 포스팅에 이어 다른 차이점에 대해 포스팅하겠습니다.


지난 포스팅은 출력 방식에 대해 설명 드렸습니다. C++이 C언어 보다는 쉬운 느낌이네요? 


입력은 어떻게 될까요? 입력도 너~무 쉽습니다!


2. 입력 방식이 다릅니다.


먼저 소스코드를 보겠습니다.


아래의 소스 코드는 숫자 2개를 입력받아서, 두 숫자의 합을 출력하는 것입니다.


===============================================================================================

소스코드

================================================================================================

  1 #include <iostream>

  2

  3 int main(void)

  4 {

  5     int val1;

  6     std::cout<<"첫 번째 숫자입력: ";

  7     std::cin>>val1;

  8

  9     int val2;

 10     std::cout<<"두 번째 숫자입력: ";

 11     std::cin>>val2;

 12

 13     int result=val1+val2;

 14

 15     std::cout<<"덧셈결과: "<<result<<std::endl;

 16     return 0;

 17 }

================================================================================================

결과

================================================================================================

첫 번째 숫자입력: 10

두 번째 숫자입력: 20

덧셈결과: 30

================================================================================================


위 소스를 분석보고 몇가지 특징을 정리해 보겠습니다.


1) 입력에도 #include <iostream>인 헤더파일을 사용한다.


입력에도 출력할 때와 마찬가지로 동일한 헤더파일을 사용합니다. 즉, 입출력에서는 위의 헤더 파일이 선언되어야 합니다.



2) 입력에는 std::cin과 >>연산자가 쓰인다.


c에서는 입력을 받을 때 보통 scanf함수를 사용하는데, c++에서는 아래와 같은 형식을 사용한다.


================================================================================================

std::cin>>'입력 변수';

================================================================================================


위와 같은 형태로 입력을 합니다.


그래서 위에서는 std::cin>>val1; 이렇게 사용을 하여, val1 변수에 키보드로 입력한 값을 저장합니다.


위의 소스에서는 int형 값을 저장하는데, 다른 자료형의 값을 입력할 때는 출력과 마찬가지로 별도의 서식문자를 사용하지 않고, 변수명만 입력하면 됩니다.


즉, 별도의 포맷 지정이 필요 없습니다!


엄청 편하죠?


그리고 추가로 말하자면, 문자열 입력도 서식문자를 사용하지 않습니다.


간단히 문자열 입력에 대한 소스 코드 예제를 보겠습니다.

================================================================================================

C에서의 문자열 입력

================================================================================================

char str[10];

scanf("%s", str);

================================================================================================

C++에서의 문자열 입력

================================================================================================

char str[10]

std::cin>>str;

================================================================================================


위와 같이 사용하면 됩니다.


 

 

 



3) C와는 달리 지역 변수를 어떤 곳에서든 선언 가능합니다.


C언어에서는 소스코드를 작성 할 경우, 지역변수의 선언을 제일 윗부분에서 작성하였습니다. 그러나 C++는 C언어와는 달리 어떤 곳에서는 선언가능합니다.


참고로 C언어의 새로운 표준에서도 변수선언의 위치를 제한 하지 않습니다. 그러나 대부분의 C언어 컴파일러에서는 제한을 둡니다.


소스 코드 예제를 살펴보겠습니다.


아래의 소스코드는 두 숫자의 사이 값들의 합을 구하는 것입니다.


===============================================================================================

소스코드

================================================================================================

  1 #include <iostream>

  2

  3 int main(void)

  4 {

  5     int val1, val2;

  6     int result=0;

  7     std::cout<<"두 개의 숫자입력: ";

  8     std::cin>>val1>>val2;

  9

 10     if(val1<val2)

 11     {

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

 13             result+=i;

 14     }

 15     else

 16     {

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

 18                 result+=i;

 19     }

 20

 21     std::cout<<"두 수 사이의 정수 합: "<<result<<std::endl;

 22     return 0;

 23 }

================================================================================================

결과

================================================================================================

두 개의 숫자입력: 3 10

두 수 사이의 정수 합: 39

================================================================================================


위의 소스는 두 개의 정수를 입력받아서 그 사이의 합을 구하는 소스코드입니다.


8행을 보겠습니다.

================================================================================================

std::cin>>val1>>val2;

================================================================================================


첫번째 입력되는 정수가 val1에 저장되고, 두번째 입력되는 정수가 val2에 저장됩니다.


두 변수 사이의 경계는 탭, 스페이스바, Enter키의 입력과 같은 공백에 의해 나누어집니다.


12,17행을 보면 for문 내에서 변수 선언도 가능합니다.


================================================================================================

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

================================================================================================


아래의 소스코드는 배열을 기반으로 하여 문자열을 입력, 출력하는 것입니다.


================================================================================================

소스코드

================================================================================================

  1 #include <iostream>

  2

  3 int main(void)

  4 {

  5     char name[100];

  6     char lang[200];

  7

  8     std::cout<<"이름은 무엇입니까? ";

  9     std::cin>>name;

 10

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

 12     std::cin<<lang;

 13

 14     std::cout<<"내 이름은 "<<name<<"입니다.\n";

 15     std::cout<<"제일 좋아하는 언어는 "<<lang<<"입니다."<<std::endl;

 16     return 0;

 17 }

================================================================================================

결과

================================================================================================

이름은 무엇입니까? letitkang

좋아하는 프로그래밍 언어는 무엇인가요? c++

내 이름은 letitkang입니다.

제일 좋아하는 언어는 c++입니다.

================================================================================================


 

 



문자열도 일반 변수처럼 입,출력이 가능합니다.

이것으로 간단하게 c와 c++의 큰 차이점을 살펴 보았습니다.

오늘은 포스팅은 여기까지입니다!

다음 강에서는 C++의 다른 기능에 대해서 이야기해보도록 하겠습니다!

감사합니다.


728x90
반응형