01. C와 C++ 비교
C와 C++ 차이점 및 특징
C++ 파일도 C와 동일하게 Visual Studio 상에서 손쉽게 만들 수 있다. 프로젝트를 생성한 뒤 소스파일에서 오른쪽 클릭 후 추가 - 새항목을 선택한 뒤 'main.cpp'와 같이 명명하여 추가하면 된다.
iostream
iostream 라이브러리는 C++ 표준 입출력 라이브러리이며 C의 stdio.h와 흡사하게 사용된다. 과거에는 iostream.h로 쓰였지만 최신 C++ 문법에서는 .h를 붙이지 않는다.
#include <iostream>
using namespace std;
int main(void) {
cout << "Hello World" << endl;
system("pause");
return 0;
}
endl을 통해 줄바꿈을 실행한다.
기본 입출력
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++의 Namespace
네임스페이스는 특정 영역에 이름을 설정할 수 있도록 하는 문법이다. 서로 다른 개발자가 공동으로 프로젝트를 진행할 때 각자 개발한 모듈을 하나로 합칠 수 있도록 해준다.
#include <iostream>
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;
}
using 키워드를 사용하여 표준 라이브러리(std)를 모두 사용하도록 처리할 수 있다.
#include <iostream>
using namespace std;
int main(void) {
string input;
cin >> input;
cout << input << endl;
system("pause");
return 0;
}
C++의 문자열 자료형
C++은 표준 문자열 자료형을 제공하며 string 헤더 파일에 정의되어 있다.
언어별 문자열형태
C | char arr[SIZE]; |
C++ | string s; |
C++ 문자열 자료형 사용
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string input;
cin >> input;
for (int i = 0;i < input.size();i++) {
cout << input << endl;
}
system("pause");
return 0;
}
C++에서 공백을 포함해 한 줄을 모두 문자열 형태로 입력 받고자 한다면 getline() 함수를 사용한다.
#include <iostream>
#include <string>
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;
}
string의 자료형 변환
C++의 string은 다른 자료형으로 변환이 간편하다.
#include <iostream>
#include <string>
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>
#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) 기술을 지원한다.
출처
'C++' 카테고리의 다른 글
C++ #06 오버로딩 (0) | 2021.11.29 |
---|---|
C++ #05 정적할당, 동적할당 (0) | 2021.11.29 |
C++ #04 클래스 상속 (0) | 2021.11.29 |
C++ #03 생성자와 소멸자 (0) | 2021.11.29 |
C++ #02 클래스 (0) | 2021.11.29 |