C++
표준 입출력 라이브러리
#include <iostream>iostream 라이브러리는 c++ 표준 입출력 라이브러리이다. c언어의 stdio.h와 흡사하게 사용된다. c++에서는 형식 지정자(ex %d, %f)를 넣어주지 않아도 변수를 타입에 맞게 적절히 입출력을 해준다. c++ 기본 입출력 라이브러리에서는 >>와 << 연산자를 제공한다. 이때 입력을 받는 >> 연산자는 공백문자(space, Enter, Tab)을 기준으로 입력을 받는다.
#include <iostream>
#include <string>
int main(){
	std::string input;
	std::cin >> input;
	std::cout << input << std::endl;
	return 0;
}cin
고수준 입력 방식을 사용하면 코드가 간단해지지만, 이에 의한 속도 저하 또한 클 수 있다. <cstdio>와의 동기화를 끄면 훨씬 빨라진다.
#include <iostream>
using namespace std;
int main(void){
    cin.sync_with_stdio(false);    
    return 0;
}namespace
namespace는 특정 영역에 이름을 설정할 수 있도록 하는 문법이다. 서로 다른 개발자가 공동으로 프로젝트를 진행할 때 각자 개발한 모듈을 하나로 합칠 수 있게 해준다.
[namespace]::[변수 혹은 함수]namespace라는 소속 공간에 따라 변수나 함수가 같은 이름임에도 다르게 구분이 될 수 있다.
#include <iostream>
namespace A{
    void function(){
        cout << "A namespace"<< endl;
    }
}
namespace B{
    void function(){
        cout << "B namespace"<< endl;
    }
}
int main(){
    A::function();
    B::function();
    return 0;
}여기서 ::는 범위지정 연산자로 어떤 namespace에서 어떤 function을 사용할 것인지 명시할 수 있다.
using namespace <namespace>기본적으로 표준 라이브러리를 using 키워드를 이용해 namespace로 선언해두고 앞에 명시하지 않고 사용할 수 있다.
using namespace std;
int main(){
	string input;
	cin >> input;
	cout << input << endl;
	return 0;
}string 문자열 자료형
c++은 표준 문자열 자료형을 제공한다. 이는 string 헤더 파일에 정의되어 있다. 클래스로 구현되어있어 각 자료형별로 내장함수가 있으며, 이를 이용할 수 있다는 장점이 있다.
char arr[SIZE]; // c언어
string s; 			// cpp위에서 말한 >> 연산자는 공백을 기준으로 입력받는데, 한 줄 전체를 입력받고 싶은 경우에는 getline()함수를 사용할 수 있다.
int main(){
	string input;
	getline(cin, input);
	cout << input << endl;
	return 0;
}또한, c++의 string은 다른 자료형으로의 변환이 간편하다. to_string(), stoi()와 같이 정수를 문자열로, 문자열을 정수로 쉽게 변환할 수 있다.
 		int i = 123;
 		string s = to_string(i);
    cout << "정수 -> 문자열" << s << endl;
    s = "456";
    i = stoi(s);
    cout << "문자열 -> 정수" << i << endl;동적할당도 c++에서 더 간단하게 할 수 있다.
#include <iostream>
#define SIZE 100
using namespace std;
int *arr;
int main(){
	arr = new int[SIZE]; // 동적할당
	for(int i=0; i < SIZE; i++){
		cout << arr[i] << ' ';
	}
	delete arr; // 할당 해제
	return 0;
}new 키워드로 동적할당을 할 수 있으며, 할당 해제시에는 delete로 할 수 있다.
c언어와 비교
- c++는 객체 지향 패러다임을 따르고 있는 언어, c언어는 절차적 프로그래밍 언어 
- 즉, c++은 객체 중심의 언어이고, c언어는 함수 기반의 언어이다. 
- c++은 c언어의 구조체(struct)대신에 class를 사용한다. 
- c++은 공식적으로 예외처리 기술을 지원한다. 
Last updated
Was this helpful?