본문 바로가기

카테고리 없음

C++ 기본 문법-헤더 파일, 입출력

<C와 C++의 차이점>

C언어는 절차지향 프로그램이라면, C++은 객체지향 프로그램이다.

ex)

C: 기상->세수->밥->등교 (실행될 문법들을 순차적으로 작성)

C++: 클래스 생성(붕어빵 틀), 클래스로부터 객체 생성(속성+동작)

 

<헤더파일>

C에서는 입출력 헤더파일로 #include <stdio.h>를 사용했다.

C++은 객체지향 언어이기 때문에 입출력 기능+클래스&객체 기능이 탑재된 클래스

iostream을 include 한다.   --> #include <iostream>

c++에서 사용하는 ios 클래스 구조도

c++에서 사용하는 ios클래스는 입력만 가능한 istream클래스와 출력만 가능한 ostream클래스로 나눠진다.

편의를 위해 입/출력 기능이 한꺼번에 가능한 iostream을 만들어 이를 불러와 편리하게 사용하는 것이다.

*iostream의 namespace: std

 

//namespace: 여러개의 전역적인 라이브러리, 함수 혹은 클래스 등이 중복되어 컴파일 사이의 문제를 야기할 수 있으므로, 이들을 구분하여 중복되지 않도록 하는 키워드를 의미함.

 

<입출력 문법>

1)표준출력스트림: std::cout

 

#include <iostream>
{
	std::cout<<"hello_world!"<<std::endl;
   
	return 0;
}

iostream의 namespace는 std인 것을 기억하자.

std:: cout --> std라는 namespace를 갖는 공간에 소속된 cout 객체를 불러와 문구를 출력한다는 뜻이다.

cout 객체를 사용할때는 ostream 클래스에서 정의한 "<<" 연산자를 사용한다.

 

2)표준입력스트림: std::cin

#include <iostream>
int main(void)
{
	char name[30];
    	std::cin>>name;
    
	return 0;
}

std::cin -->출력을 담당하는 cout객체에서 원하는 변수에 값 입력을 담당하는 cin객체로 이름이 바뀐 것 뿐이다.

문법 구조는 위와 동일하다.

단, 여기서 주의할 점은, cin은 tab, space, enter와 같은 공백문자를 입력받지 못하고 오로지 단발성 문자, 숫자 값만 입력 받을 수 있다.

 

만약 공백 문자열 또한 입력받고 싶다면?

아래와 같이 작성하면 된다.

#include <iostream>
int main(void)
{
	char name[30];
    	std::cin.getline(name,sizeof(name));
	return 0;
}

//만약 "판다	귀요미"를 입력했다면 공백 포함하여 "판다	   귀요미"가 변수 name안에 저장됨.
//std::cin을 사용할 경우에는 공백 이하 문자가 모두 잘리고 "판다"만 저장된다.

 

지금, 간단한 코드를 작성하면서 계속 iostream의 namespace인 std를 앞에 선언해줘야 한다.

이는 매우 번거롭기 때문에 "using namespace std;"를 한출 추가해주면, std를 생략해도 코드가 제대로 작동한다.

 

이를 사용하여 이름과 구매 금액을 입력받고, 구매 금액의 1%를 포인트로 적립하여 이를 알려주는 프로그램을

간단히 작성해보자.

 

#include <iostream>

using namespace std; //std::cout --> cout, std 생략해도 됨. 가독성 좋아짐.

int main(void)
{
     //구매금액의 1%를 포인트로 적립해주는 프로그램, 적립 포인트 출력하기

    char name[30];
    cout << "성함과 전화번호를 입력하세요\n";

    //cin >> name;
    //cin은 enter, space, tab키 등의 문자를 모두 무시한다. 오로지 단발성 문자, 숫자 값만 입력을 받음.
   //만약 그 외의 것 또한 입력받고 싶다면?
    cin.getline(name, sizeof(name));
   
    cout << "구매 금액을 입력하세요.";
    int caltot,calpoint;//c언어는 변수 선언을 반드시 위에서 한번에 해줘야 하지만 c++은 중간에서 지정해도 됨.
    cin >> caltot;
    calpoint = caltot * 0.01;

    cout << name<< "님, " << calpoint << "점의 포인트가 적립되었습니다.\n";
   
   
    return 0;
}

 

 

##오늘 공부 요약 코드##

//  C-->순차적(절차지향) 프로그램
//기상->세수->밥->등교->공부->놀기->하교->학원
//#include <stdio.h>

//C++-->객체지향 프로그램
//클래스 & 객체 (속성+동작)->이름, 학번, 학과, 전화번호, 씻기, 걷기
//#include <iostream>, c의 표준 입출력 기능+클래스&객체 기능 추가된 헤더파일

//namespace: 여러개의 전역적인 라이브러리, 함수 혹은 클래스 등이 중복되어 컴파일 사이의 문제를 야기할 수 있으므로, 이들을 구분하여
//중복되지 않도록 하는 키워드를 의미한다.02

#include <iostream>

using namespace std; //std::cout --> cout, std 생략해도 됨. 가독성 좋아짐.

int main(void)
{
    //표준출력스트림(std::cout)
    std::cout << "hello c++ ~^^"<<std::endl;//std(namespace) 공간에 소속된 cout객체라는 의미, endl=다음줄로 넘어가세요
    std::cout<<"wonderful c++" << std::endl;
    //표준입력스트림(std::cin), 모두 buffer 공간을 갖고있음.


     //구매금액의 1%를 포인트로 적립해주는 프로그램, 적립 포인트 출력하기

    char name[30];
    cout << "성함과 전화번호를 입력하세요\n";

    //cin >> name;
    //cin은 enter, space, tab키 등의 문자를 모두 무시한다. 오로지 단발성 문자, 숫자 값만 입력을 받음.
   //만약 그 외의 것 또한 입력받고 싶다면?
    cin.getline(name, sizeof(name));
   
    cout << "구매 금액을 입력하세요.";
    int caltot,calpoint;//c언어는 변수 선언을 반드시 위에서 한번에 해줘야 하지만 c++은 중간에서 지정해도 됨.
    cin >> caltot;
    calpoint = caltot * 0.01;

    cout << name<< "님, " << calpoint << "점의 포인트가 적립되었습니다.\n";
   
   
    return 0;
}