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μ—μ„œ μ–΄λ–€ function을 μ‚¬μš©ν•  것인지 λͺ…μ‹œν•  수 μžˆλ‹€.

기본적으둜 ν‘œμ€€ 라이브러리λ₯Ό using ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄ namespace둜 선언해두고 μ•žμ— λͺ…μ‹œν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλ‹€.

string λ¬Έμžμ—΄ μžλ£Œν˜•

c++은 ν‘œμ€€ λ¬Έμžμ—΄ μžλ£Œν˜•μ„ μ œκ³΅ν•œλ‹€. μ΄λŠ” string 헀더 νŒŒμΌμ— μ •μ˜λ˜μ–΄ μžˆλ‹€. 클래슀둜 κ΅¬ν˜„λ˜μ–΄μžˆμ–΄ 각 μžλ£Œν˜•λ³„λ‘œ λ‚΄μž₯ν•¨μˆ˜κ°€ 있으며, 이λ₯Ό μ΄μš©ν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€.

μœ„μ—μ„œ λ§ν•œ >> μ—°μ‚°μžλŠ” 곡백을 κΈ°μ€€μœΌλ‘œ μž…λ ₯λ°›λŠ”λ°, ν•œ 쀄 전체λ₯Ό μž…λ ₯λ°›κ³  싢은 κ²½μš°μ—λŠ” getline()ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

λ˜ν•œ, c++의 string은 λ‹€λ₯Έ μžλ£Œν˜•μœΌλ‘œμ˜ λ³€ν™˜μ΄ κ°„νŽΈν•˜λ‹€. to_string(), stoi()와 같이 μ •μˆ˜λ₯Ό λ¬Έμžμ—΄λ‘œ, λ¬Έμžμ—΄μ„ μ •μˆ˜λ‘œ μ‰½κ²Œ λ³€ν™˜ν•  수 μžˆλ‹€.

동적할당도 c++μ—μ„œ 더 κ°„λ‹¨ν•˜κ²Œ ν•  수 μžˆλ‹€.

new ν‚€μ›Œλ“œλ‘œ 동적할당을 ν•  수 있으며, ν• λ‹Ή ν•΄μ œμ‹œμ—λŠ” delete둜 ν•  수 μžˆλ‹€.

c언어와 비ꡐ

  • c++λŠ” 객체 μ§€ν–₯ νŒ¨λŸ¬λ‹€μž„μ„ λ”°λ₯΄κ³  μžˆλŠ” μ–Έμ–΄, cμ–Έμ–΄λŠ” 절차적 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

  • 즉, c++은 객체 μ€‘μ‹¬μ˜ 언어이고, cμ–Έμ–΄λŠ” ν•¨μˆ˜ 기반의 언어이닀.

  • c++은 cμ–Έμ–΄μ˜ ꡬ쑰체(struct)λŒ€μ‹ μ— classλ₯Ό μ‚¬μš©ν•œλ‹€.

  • c++은 κ³΅μ‹μ μœΌλ‘œ μ˜ˆμ™Έμ²˜λ¦¬ κΈ°μˆ μ„ μ§€μ›ν•œλ‹€.

Last updated