C++

C언와 C++ 비교

khon98 2020. 12. 14. 21:09

C++의 iostream

- iostream 라이브러리는 C++ 표준 입출력 라이브러리

- C언어의 stdio.h와 흡사하게 사용됨

- 과거에는 iostream.h로 사용되었지만 최신 C++ 문법에서는 .h를 붙이지 않음

#include <iostream>

using namespace std; // std라는 이름을 쓰겠다는 정의

int main(void) {
    cout << "Hello World" << endl; // 어떠한 내용을 입력할때는 << 를 사용
    system("pause"); // 출력 이후 정지
    return 0;
}

 

 

C++의 기본 입출력

- C언어에서는 printf(), scanf() 함수에서 형식 지정자를 적어주어야 했으나 C++에서는 형식 지정자를 넣어주지 않아도 변수를 타입에 맞게 적절히 입출력을 해줌

- C++ 기본 입출력 라이브러리에서는 연산자 >>와 <<를 제공

- 이를 활용하여 모든 기본 자료형을 입출력할 수 있음

- 입력을 받는 연산자 >>는 공백 문자(Space, Enter, Tab)

#include <iostream>
#include <string>

int main(void) {
    std::string input;
    std::cin >> input;
    std::cout << input << std::endl;
    system("pause"); // 출력 이후 정지
    return 0;
}

 

C++의 네임 스페이스

1.

- 네임 스페이스(Name space)는 특정한 영역에 이름을 설정할 수 있도록 하는 문법

- 네임 스페이스는 서로 다른 개발자가 공동으로 프로젝트를 진행할 때 각자 개발한 모듈을 하나로 합칠 수 있도록 해줌

#include <iostream>
#include <string>
#include <stdio.h>

namespace A {
    void function() {
        std::cout << "A Namespace" << std::endl;
    }
}

namespace B{
    void function() {
        std::cout << "B Namespace" << std::endl;
    }
}


int main(void) {
    A::function(); // 범위 지정 연산자(::)
    B::function();
    system("pause");
    return 0;
}

 

2.

- using 키워드를 이용하여 표준 라이브러리(std)를 모두 사용하도록 처리할 수 있음

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

int main(void) {
    string input;
    cin >> input;
    cout << input << endl;
    system("pause");
    return 0;
}

 

C++의 문자열 자료형

1.

- C++은 표준 문자열 자료형을 제공

- .string 헤더 파일에 정의되어 있음

 

C언어의 문자열 : char arr[SIZE];

C++의 문자열 : string s;

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

int main(void) {
    string input;
    cin >> input;
    for (int i = 0; i < input.size(); i++) {
        cout << input[i] << '\n';
    }
    system("pause");
    return 0;
}

 

2.

- C++에서 공백을 포함하여 한 줄을 모두 문자열 형태로 입력받고자 한다면 getline() 함수를 사용할 수 있음

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

int main(void) {
    string input;
    getline(cin, input);
    for (int i = 0; i < input.size(); i++) {
        cout << input[i] << '\n';
    }
    system("pause");
    return 0;
}

 

3.

- C++의 string은 다른 자료형으로의 변환이 간편

#include <iostream>
#include <string>
#include <stdio.h>

using namespace std;

int main(void) {
    int i = 123;
    string s = to_string(i);
    cout << "정수 -> 문자열: " << s << endl;
    s = "456";
    i = stoi(s);
    cout << "문자열 -> 정수: " << i << endl;
    system("pause");
    return 0;
}

 

C++의 동적 할당

#include <iostream>
#include <string>
#include <stdio.h>
#define SIZE 100

using namespace std;

int *arr;

int main(void) {
    arr = new int[SIZE]; // 동적 할당
    for (int i = 0; i < SIZE; i++) {
        arr[i] = i;
    }
    for (int i = 0; i < SIZE; i++) {
        cout << arr[i] << ' ';
    }
    delete arr; // 할당 해제
    system("pause");
    return 0;
}

 

 

- C++은 객체 지향 패러다임을 따르고 있는 언어이지만 C언어는 절차적 프로그래밍 언어임

- C++은 객체 중심의 언어이며 C언어는 함수 기반의 언어

- C++은 C언어의 구조체(Struct) 대신에 클래스(Class)를 사용

- C++은 공식적으로 예외 처리(Exception Handling) 기술을 지원