이 문서는 대문/포털:컴퓨터공학/C++의 하위문서입니다. 문서를 수정하기 전에 토론:대문/포털:컴퓨터공학/C++을 참고해 주시기 바랍니다.
C에서 C++로 넘어가기
편집cout
편집우리는 C언어에서 다음과 같이 코딩했었습니다.
0. C소스 |
---|
#include <stdio.h>
int main(void)
{
printf("Hello world!");
return 0;
}
|
Hello world! |
C++에서는 printf보다 더 쉬운 문자열 출력 함수를 지원해줍니다. 그것은 cout입니다. C에서 printf()를 사용하기 위해 <stdio.h>를 include했던 것 처럼, C++에서 cout을 사용하기 위해서는 <iostream>이라는 헤더파일을 include해야 합니다.
주의하세요! |
C++의 헤더파일은 더 이상 파일 뒤에 .h를 붙이지 않습니다! |
또한 우리는 더 이상 문자열을 함수의 괄호 안에, cout("이런식으로") 넣을 필요가 없습니다. C++는 프로그래머에게 완전히 새로운 방식을 선보입니다. 다음 소스를 보면서 C++이 C보다 얼마나 더 편해졌는지 살펴보세요.
1. cout |
---|
#include <iostream>
using namespace std;
int main(void)
{
cout<<"Hello world!";
return 0;
}
|
Hello world! |
새로운 패러다임이군요! 왼쪽으로 향하는 꺽쇠 기호 2번이 cout이라는 함수를 사용하는 방법입니다.
T I P |
using namespace std;는 무엇인가요?
std라는 이름 공간을 소스에서 사용한다는 것입니다. 클래스에 대해서 배우면 자세히 알게 될 것입니다. 지금은 습관처럼 include 후 넣어주세요. |
예제 1번 |
자신의 이름을 출력하는 프로그램을 코딩하고 실행해보세요. |
cout함수에서도, 우리가 printf()를 쓸 때 사용했던 특수문자(escape sequence)를 사용할 수 있습니다.
2. cout-특수문자 |
---|
#include <iostream>
using namespace std;
int main(void)
{
cout<<"Hello\nworld!";
return 0;
}
|
Hello
world! |
cin
편집printf()를 대신해서 cout이 있다면, scanf()를 대신해서는 cin이 있습니다. cout과 마찬가지로 cin("이런식")으로 사용하지 않습니다.
3. cin |
---|
#include <iostream>
using namespace std;
int main(void)
{
int input;
cin>>input;
cout<<"input value is"<<input;
return 0;
}
|
10
input value is 10 |
위와 같이 코딩하고 실행하면 프로그램은, 프로그램에 사용자가 어떤 값을 넣고 엔터를 칠 때까지 기다릴 것입니다. C언어에서 scanf()를 사용해 본적이 있는 사람이라면 무슨 뜻인지 이해하실 수 있으실 것입니다. 3번 소스에서는 10을 입력하였습니다. 이 소스를 통해 cin이 scanf()의 역할을 한다는 것을 알 수 있습니다.
주의하세요! |
cout의 꺽쇠 기호는 << 왼쪽을 찌릅니다 cin의 꺽쇠 기호는 >> 오른쪽을 찌릅니다 |
우리는 cin에서 정수를 입력 받을때 서식문자를 사용하지 않았다는 사실에 집중할 필요가 있습니다. cin은 자동으로 변수에 맞게 값을 입력 받아 줍니다.
4. cin-문자를 입력 |
---|
#include <iostream>
using namespace std;
int main(void)
{
char word;
cin>>word;
cout<<"input word is ";
cout<<word;
return 0;
}
|
A
input value is A |
cin은 word가 char형 변수이기 때문에 자동으로 입력 받은 값을 char형으로 저장했습니다. 좀 더 쉽게 말하자면, cin은 word가 char형 변수이기 때문에 자동으로 %c를 사용한 것처럼 입력 받았습니다. 4번 소스를 다시 한번 봅시다. cout 또한 서식 문자를 사용하지 않았는데 word의 값을 문자로 출력해 주었군요. "cin과 cout는 변수에 맞게, 알아서 잘 작동하다"하는 것을 알 수 있습니다. 다음 소스는 이를 좀 더 잘 설명해줍니다.
5. 서식 문자가 필요 없다 |
---|
#include <iostream>
using namespace std;
int main(void)
{
char name[30]={};
char word;
int value;
double fvalue;
cin>>name;
cin>>word;
cin>>value;
cin>>fvalue;
cout<<"\ninput name is ";
cout<<name;
cout<<"\ninput word is ";
cout<<word;
cout<<"\ninput number is ";
cout<<value;
cout<<"\ninput real number is ";
cout<<fvalue;
return 0;
}
|
양현식
Y |
실수뿐만 아니라 문자열 입력까지 잘 처리해줍니다.
C++의 다른 기초적인 문법들
편집5번 소스는 이렇게도 작성할 수 있습니다.
6. 서식 문자가 필요 없고, 이렇게도 쓸 수 있다 |
---|
#include <iostream>
using namespace std;
int main(void)
{
char name[30]={};
char word;
int value;
double fvalue;
cin>>name>>word>>value>>fvalue;
cout<<"\ninput name is "<<name<<"\ninput word is "<<word<<"\ninput number is "<<value<<"\ninput real number is "<<fvalue;
return 0;
}
|
양현식
Y |
cout과 cout을 연이어 사용하는 대신 <<를 사용해 한번에 출력할 수 있습니다. 마찬가지로 cin과 cin을 연이어 사용하는 대신 >>를 사용해 한번에 입력 받을 수 있습니다.
주의하세요! |
"cout과 cout"을 <<을 사용해 더 짧은 코드로 쓸 수 있고, "cin과 cin"을 >>을 사용해 더 짧은 코드로 쓸 수 있지만,
"cout과 cin"을 어떤 기호를 사용해 더 짧게 쓸 수 는 없습니다. 말하자면, <<을 쓰는 건 <<로, >>을 쓰는 건 >>로 줄일 수 있다라고 할 수 있습니다. |
예제 2번 |
이름, 전화번호, 주소를 입력 받고, 입력 받은 이름, 전화번호, 주소를 출력하는 프로그램을 코딩하고 실행해보세요.
6번 소스처럼 <<을 사용해서 연속된 cout을 묶고 >>을 사용해 연속된 cin을 묶는 방법을 사용하세요. |
cin과 cout을 알았다면 C에서 만들던 아주 작고 간단한 프로그램들은 다른 C++의 문법을 알지 못해도 작성할 수 있습니다. 여러가지 면에서 C와 C++은 비슷하기 때문입니다. 7번 소스는 C에서 for문을 배울때 익히 코딩해봤을 구구단 출력 프로그램입니다.
7. 구구단 |
---|
#include <iostream>
using namespace std;
int main(void)
{
int i, j;
for(i=1; i<10; i++)
for(j=1; j<10; j++)
cout << i << "*" << j << "=" << i*j<<"\n"
return 0;
}
|
1*1=1 1*2=2 1*3=3 1*4=4 ...중략... 9*8=72 9*9=81 |
cin과 cout의 사용을 제외하면 C에서의 코딩과 그리 다르게 느껴지지 않습니다. 자, 다음은 C++에서 제공해주는 문법을 첨가시킨 구구단 출력 프로그램입니다. 무엇이 달라졌는지 찾아보세요.
8. 달라진 구구단 |
---|
#include <iostream>
using namespace std;
int main(void)
{
for(int i=1; i<10; i++)
for(int j=1; j<10; j++)
cout << i << "*" << j << "=" << i*j<<endl;
return 0;
}
|
1*1=1 1*2=2 1*3=3 1*4=4 ...중략... 9*8=72 9*9=81 |
첫째로, 변수를 선언(int i, int j)하는 부분이 for문 안으로 들어갔습니다. C에서 모든 변수는, 어떤 변수라도 사용되기 전에 모두 선언되어야 했습니다. 하지만 C++에서는 변수는 그 변수를 사용하기 전에만 선언하면 됩니다. 두번째로, new line 특수문자인 "\n"대신에 endl을 사용했습니다. endl은 line을 바꿔주는 기능과, 버퍼를 비워주는 기능을 가지고 있습니다.
T I P |
버퍼를 비워주는 기능이 무슨 말인가요?
C를 공부할때 파일 스트림과 버퍼에 대해 배우지 않았다면 위 문장을 이해하지 못할 수 있습니다. |
연습 문제 1번 |
예제 2번을 endl을 사용하여 다시 풀어보세요.
예제 2번 : 이름, 전화번호, 주소를 입력 받고, 입력 받은 이름, 전화번호, 주소를 출력하는 프로그램을 코딩하고 실행해보세요. |
정리
편집[C에서 C++로 넘어가기]에서 우리는 다음과 같은 것들을 배웠습니다. 다음 챕터로 넘어 가기 전에 기억을 더듬어 보세요. 복습은 최고의 공부법!
- printf()대신 cout, 그리고 왼쪽을 찌르는 꺽쇠 기호<<
- scanf()대신 cin, 그리고 오른쪽을 찌르는 꺽쇠 기호>>
- 여전히 사용 가능한 특수 문자! cout<<"\n";
- 이제 변수는 그 변수를 사용하기 전에만 선언하면 된다!
- endl의 기능 두가지. 한가지만 이해해도 문제 없어요.