Computer Security

#1 C언어와 C++비교하기 본문

프로그래밍/C++

#1 C언어와 C++비교하기

쿠리 Kuri 2022. 6. 12. 18:30

C++에서의 Hello World 는? 

코드예시

#include <iostream>

using namespace std;

int main(void) {
    cout << "Hello World" << endl;
    system("pause");
    return 0;
}

가장 기본적인 뼈대를 이루는 위 코드이다.

 

C++의 iostream

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

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


C++의 기본 입출력

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

 

코드 예시

#include <iostream>
#include <string>


int main(void) {
	std::string input;   //스트링이라는 라이브러리를 사용하고 거기서 input을 쓰겠다 선언
	std::cin >> input;
	std::cout << input << std::endl;
	system("pause");
	return 0;
}

만약, using namesapce std; 가 없다면,  코드마다 std:: 를 선언 해주어야 한다.

 

결과 값

원래 문자열을 사용하려면 C언어에서는 입력받고 그것을 배열에 저장하고, 그로부터 출력 했어야 했다면, C++에서는 기본적으로 스트링을 제공하고 있기에, 그런 복잡한 작업이 필요 없다.

 


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

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

특히 입력을 받는 연산자 >>는 공백 문자(Space, Enter, Tab)을 기준으로 입력을 받는다.

 

C++의 네임스페이스
네임스페이스(Namespace)는 특정한 영역에 이름을 설정할 수 있도록 하는 문법이다.

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

 

코드예시

#include <iostream>

using namespace std;

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

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

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

 

결과 값

 

 

using 키워드를 이용해 표준 라이브러릴(std)를 모두 사용하도록 처리할 수 있다.

 

코드예시

#include <iostream>
#include <string>

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;

 

코드 예시

 

#include <iostream>
#include <string>

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;
}

input이 단순한 자료형 선언처럼 보이지만, 내부적으로 함수를 가지고 있다.

input.size() 같은경우 문자열의 길이를 반환한다.

cin 같은경우는 공백이 생기면 끊어진다.

 

이럴땐, 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;
}

결과 값

 

 

C++의 문자열 자료형
C++의 string은 다른 자료형으로의 변환이 간편하다.

 

to_string :정수를 문자열로 바꾸어 준다.

stoi = string to int   : 문자열 -> 정수

stof = string to float 

stol = string to long

stod = string to double

 

코드 예시

#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++의 동적 할당

 

원래 C는 stdlib.h 헤더파일에서 malloc 함수를 이용해 동적 할당을 시행했지만, new 를 이용해 시행 할 수 있다.

또, free 대신, delete 를 이용해 할당 해제를 할 수 있다.

 

코드 예시

#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++ 비교하기
1) C++는 객체 지향 패러다임을 따르고 있는 언어이지만 C언어는 절차적 프로그래밍 언어이다.
2) 다시 말해 C++은 객체 중심의 언어이며 C언어는 함수 기반의 언어이다.
3) C++은 C언어의 구조체(Struct) 대신에 클래스(Class)를 사용한다.
4) C++는 공식적으로 예외 처리(Exception Handling) 기술을 지원한다.

5) C++에서 가장 많이 사용되는 표준 라이브러리 중 하나는 string 이다.

 

'프로그래밍 > C++' 카테고리의 다른 글

#6 C++ 프렌드  (0) 2022.06.17
#5 C++ 오버로딩  (0) 2022.06.16
#4 C++ 클래스 상속  (0) 2022.06.15
#3 C++ 생성자와 소멸자  (0) 2022.06.14
#2 C++의 클래스  (0) 2022.06.13
Comments