c & c++

[C++] C++μ΄λž€? string 클래슀

쑰밈밍 2022. 9. 19. 02:15

πŸ’‘ C++

1. 절차 지ν–₯적이며 ꡬ쑰적 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

2. 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

3. μΌλ°˜ν™” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

 

πŸ’‘  λ„€μž„μŠ€νŽ˜μ΄μŠ€ namespace

: μ†Œμ†λœ 곡간

ex) using namespace std; // stdλΌλŠ” λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— μ†ν•œ μ •μ˜λ“€μ€ std::λ₯Ό 뢙이지 μ•Šμ•„λ„ μ‚¬μš©ν•  수 있음

 

πŸ’‘ ν‘œμ€€ μž…μΆœλ ₯

: #include <iostream>

☞ cout : 좜λ ₯

std::cout << "Hello";

☞ cin : μž…λ ₯(ν•œ 단어 λ‹¨μœ„)

std::cin >> μ €μž₯ν•  λ³€μˆ˜;

 

πŸ’‘ 포인트 λ¦¬ν„°λŸ΄ μƒμˆ˜

: nullptr

: nullptr == 0 => true

 

πŸ’‘ λ²”μœ„ 지정 μ—°μ‚°μž(::)

1. ::μ‹λ³„μž

2. ν΄λž˜μŠ€μ΄λ¦„::μ‹λ³„μž

3. λ„€μž„μŠ€νŽ˜μ΄μŠ€::μ‹λ³„μž

4. 열거체::μ‹λ³„μž

 

πŸ’‘ 멀버 포인터 μ—°μ‚°μž

: 멀버 포인터 μ—°μ‚°μžλ₯Ό μ΄μš©ν•΄ 클래슀의 멀버λ₯Ό κ°€λ¦¬ν‚€λŠ” 포인터 μ •μ˜.

1. ν΄λž˜μŠ€νƒ€μž…μ˜κ°μ²΄.*멀버이름

2. ν΄λž˜μŠ€νƒ€μž…κ°μ²΄μ˜ν¬μΈν„°->*멀버이름

 

πŸ’‘ typeid μ—°μ‚°μž

: 객체의 νƒ€μž…μ— κ΄€ν•œ 정보 확인

: typeid(ν‘œν˜„μ‹)

 

πŸ’‘ 포인터

: λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œκ°’μ„ μ €μž₯ν•˜λŠ” λ³€μˆ˜, 포인터 λ³€μˆ˜

☞ μ£Όμ†Œ μ—°μ‚°μž(&)

: &λ³€μˆ˜λͺ…

: ν•΄λ‹Ή λ³€μˆ˜μ˜ μ£Όμ†Œκ°’μ„ λ°˜ν™˜, λ²ˆμ§€ μ—°μ‚°μž

☞ μ°Έμ‘° μ—°μ‚°μž(*)

: 포인터λͺ…/μ£Όμ†Œ μ•žμ— μ‚¬μš©, 포인터에 μ§€μ •λœ μ£Όμ†Œμ— μ €μž₯λ˜μ–΄ μžˆλŠ” 값을 λ°˜ν™˜

 

πŸ’‘ 동적 λ©”λͺ¨λ¦¬ ν• λ‹Ή

: 런 νƒ€μž„μ— λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήλ°›λŠ”κ²ƒ

❗ 데이터 μ˜μ—­, μŠ€νƒ μ˜μ—­μ— ν• λ‹Ήλ˜λŠ” λ©”λͺ¨λ¦¬μ˜ ν¬κΈ°λŠ” 컴파일 νƒ€μž„μ— 미리 κ²°μ •λœλ‹€.

<-> νž™ μ˜μ—­ : ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰(런 νƒ€μž„) 도쀑 μ‚¬μš©μžκ°€ 직접 κ²°μ •

❗ malloc(), free() 와 λΉ„μŠ·

☞ new μ—°μ‚°μž

: λ©”λͺ¨λ¦¬ 곡간에 객체λ₯Ό μœ„ν•œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ή λ°›μŒ

+ new둜 ν• λ‹Ή 받은 λ©”λͺ¨λ¦¬λŠ” ν•΄λ‹Ή ν¬μΈν„°λ‘œλ§Œ μ ‘κ·Ό ν•  수 μžˆλ‹€

: νƒ€μž…* 포인터λͺ… = new νƒ€μž…(λ©”λͺ¨λ¦¬ μ’…λ₯˜ 지정);

☞ delete μ—°μ‚°μž

: λ™μ μœΌλ‘œ 할당받은 λ©”λͺ¨λ¦¬ λ‹€μ‹œ λ°˜ν™˜

: delete 포인터λͺ…;

 

πŸ’‘ λ¬Έμžμ—΄, string 클래슀

❗ 이전 Cμ–Έμ–΄μ˜ λ¬Έμžμ—΄μ€ μž…λ ₯ν•  λ¬Έμžμ—΄μ˜ 길이λ₯Ό 미리 μ•Œκ³  μžˆμ–΄μ•Όν•œλ‹€.

: #include <string>

: λ„€μž„μŠ€νŽ˜μ΄μŠ€ std

string str1;              // λ¬Έμžμ—΄μ˜ μ„ μ–Έ
str1 = "C++ Programming"; // λ¬Έμžμ—΄μ˜ μ΄ˆκΈ°ν™”
string str2 = "C++";      // λ¬Έμžμ—΄μ˜ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”

: λ¬Έμžμ—΄μ˜ 길이 μžλ™μœΌλ‘œ 처리.

: λ°°μ—΄μ²˜λŸΌ 인덱슀λ₯Ό 톡해 λ‹€λ£° 수 μžˆλ‹€.

: λ¬Έμžμ—΄κΈΈμ΄ == λ³€μˆ˜λͺ….length()

☞ getline(cin, λ³€μˆ˜λͺ…) : λ¬Έμžμ—΄ ν•œ ν–‰(line) λ°›κΈ°

 

πŸ’‘ string λ©”μ†Œλ“œ

length() λ¬Έμžμ—΄ 길이 λ°˜ν™˜ find() νŠΉμ • λ¬Έμžμ—΄μ„ μ°Ύμ•„, μ‹œμž‘ μœ„μΉ˜ λ°˜ν™˜
if) 찾지 λͺ»ν•˜λ©΄ string::npos λ°˜ν™˜
size() 객체가 μ‹€μ œ μ‚¬μš©ν•˜λŠ”
λ©”λͺ¨λ¦¬ 크기 λ°˜ν™˜
replace() νŠΉμ • λ¬Έμžμ—΄ μ°Ύμ•„,
κ·Έ λ¬Έμžμ—΄μ„ λ‹€λ₯Έ λ¬Έμžμ—΄λ‘œ λŒ€μ²΄
append() ν•˜λ‚˜μ˜ λ¬Έμžμ—΄μ˜ 끝에
λ‹€λ₯Έ λ¬Έμžμ—΄ μΆ”κ°€
capacity() λ¬Έμžμ—΄μ΄ μž¬λŒ€μž… 받지 μ•Šκ³ ,
μ €μž₯ν•  수 μžˆλŠ” μ΅œλŒ€ λ¬Έμžμ—΄ 길이 λ°˜ν™˜
compare() 두 λ¬Έμžμ—΄ κ°„μ˜ λ‚΄μš© 비ꡐ -> bool λ°˜ν™˜ max_size() μ΅œλŒ€ λ¬Έμžμ—΄μ˜ 길이
// append()
λ¬Έμžμ—΄.append(μΆ”κ°€ν• λ¬Έμžμ—΄);                 // μΆ”κ°€ν•  λ¬Έμžμ—΄μ„ 맨 끝에 좔가함.
λ¬Έμžμ—΄.append(μΆ”κ°€ν• λ¬Έμžμ—΄, μ‹œμž‘μœ„μΉ˜, 개수); // μΆ”κ°€ν•  λ¬Έμžμ—΄μ˜ μ‹œμž‘ μœ„μΉ˜λΆ€ν„° 개수만큼만 맨 끝에 좔가함.
λ¬Έμžμ—΄.append(개수, μΆ”κ°€ν• λ¬Έμž);             // μΆ”κ°€ν•  문자λ₯Ό 개수만큼 맨 끝에 좔가함

// compare()
str1.compare(str_02) == 0 // str1κ³Ό str2이 같을 경우
str1.compare(str_02) < 0  // str1이 str2보닀 사전 편찬순으둜 μ•žμ— μžˆμ„ 경우
str1.compare(str_02) > 0  // str1이 str2보닀 사전 편찬순으둜 뒀에 μžˆμ„ 경우

// replace()
λ¬Έμžμ—΄.replace(λŒ€μ²΄ν• λ¬Έμžμ—΄μ˜μ‹œμž‘μœ„μΉ˜, λŒ€μ²΄ν• λ¬Έμžμ—΄μ˜κΈΈμ΄, μƒˆλ‘œμš΄λ¬Έμžμ—΄);