hugDog
Android DevLog
hugDog
전체 방문자
였늘
μ–΄μ œ
  • πŸ™Œ Hello? (162)
    • πŸ§©μ•ˆλ“œλ‘œμ΄λ“œ (12)
      • κ°œλ… 정리 (5)
      • 버그 ν•΄κ²° (4)
      • 기타 (3)
    • πŸ”μ•Œκ³ λ¦¬μ¦˜ (54)
      • κ°œλ… (0)
      • λ°±μ€€ (48)
      • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ (6)
    • πŸ“„κ°œλ°œ 일지 (0)
      • FINPO (0)
    • πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (71)
      • C++ 정리 (49)
      • C++κΈ°μ΄ˆν”ŒλŸ¬μŠ€ μ—°μŠ΅λ¬Έμ œ (20)
      • Kotlin (2)
    • ⭐Project (1)
    • 🚴TIL (13)
      • Clean Code (13)
    • πŸš©κΈ°νƒ€ (9)
      • λͺ©ν‘œ (6)
      • 일상 (3)
      • λ¬Έμ„œ (0)

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
hugDog
πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ 정리

C++ 정리 - 46 (string : c++11 μƒμ„±μžλ“€, string 클래슀 μž…λ ₯, λ¬Έμžμ—΄ μž‘μ—…, μ˜€λ²„ λ‘œλ”©λœ find() λ©”μ„œλ“œ)

πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ 정리

C++ 정리 - 46 (string : c++11 μƒμ„±μžλ“€, string 클래슀 μž…λ ₯, λ¬Έμžμ—΄ μž‘μ—…, μ˜€λ²„ λ‘œλ”©λœ find() λ©”μ„œλ“œ)

2020. 12. 5. 20:02
728x90

-string : c++11 μƒμ„±μžλ“€

string(string && str) noexcept μƒμ„±μžλŠ” str이 λ°˜λ“œμ‹œ const둜 μ·¨κΈ‰λ˜λŠ” 것이 μ•„λ‹ˆλ‹€. 이런 ν˜•νƒœμ˜ μƒμ„±μžλ₯Ό 이동 μƒμ„±μžλΌ ν•œλ‹€. μ»΄νŒŒμΌλŸ¬λŠ” κ²½μš°μ— 따라 볡사 μƒμ„±μž λŒ€μ‹ μ— 이동 μƒμ„±μžλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. 

string(initializer_list<char> il) μƒμ„±μžλŠ” string 클래슀의 리슀트 μ΄ˆκΈ°ν™”λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€.

string piano_man = {'L','i','s','z','t'};

 

string 클래슀 μž…λ ₯

cμŠ€νƒ€μΌμ˜ λ¬Έμžμ—΄μ— λŒ€ν•΄μ„œλŠ” μ„Έ κ°€μ§€ μž…λ ₯ μ˜΅μ…˜μ„ μ‚¬μš©ν•  수 μžˆλ‹€.

char info[100];

cin>>info; //ν•œ 단어λ₯Ό μ½λŠ”λ‹€.

cin.getline(info,100); //ν•œ 행을 읽되, \n은 내버린닀.

cin.get(info,100); //ν•œ 행을 읽되, \n은 큐에 남겨둔닀.

 

string 객체의 κ²½μš°μ—λŠ” 두 κ°€μ§€ μ˜΅μ…˜μ„ μ‚¬μš©ν•  수 μžˆλ‹€.

string stuff;

cin>>stuff; //ν•œ 단어λ₯Ό μ½λŠ”λ‹€.

getline(cin,stuff); //ν•œ 행을 읽되, \n은 내버린닀.

 

getline()의 두 버전은, μž…λ ₯을 κ΅¬λΆ„ν•˜λŠ” μš©λ„λ‘œ μ–΄λŠ 문자λ₯Ό μ‚¬μš©ν•  것인지 μ§€μ •ν•˜λŠ” 선택적 λ§€κ°œλ³€μˆ˜λ₯Ό ν—ˆμš©ν•œλ‹€.

cin.getline(info,100,':'); //:κΉŒμ§€ 읽고 :은 내버린닀.

getlinf(stuff,':'); //:κΉŒμ§€ 읽고 :은 내버린닀.

 

λ¬Έμžμ—΄ μž…λ ₯ ν•¨μˆ˜λ“€μ€ μ œν•œμ΄ μžˆλ‹€. 첫 번째 μ œν•œ μš”μΈμ€, string::npos둜 λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄μ˜ μ΅œλŒ€ ν—ˆμš© 크기이닀. 일반적으둜 이것은 unsigned int의 μ΅œλŒ€ 크기이닀. 

 

두 번째 μ œν•œ μš”μΈμ€ ν”„λ‘œκ·Έλž¨μ΄ μ‚¬μš©ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬μ˜ 크기이닀. string 클래슀λ₯Ό μœ„ν•œ getline() ν•¨μˆ˜λŠ”, λ‹€μŒ μ„Έ κ°€μ§€ 쀑 μ–΄λŠ ν•˜λ‚˜κ°€ 일어날 λ•ŒκΉŒμ§€, μž…λ ₯μœΌλ‘œλΆ€ν„° λ¬Έμžμ—΄λ“€μ„ 읽어 ν•˜λ‚˜μ˜ λ¬Έμžμ—΄λ‘œ μ €μž₯ν•œλ‹€.

  • 파일의 끝을 λ§Œλ‚¬μ„ λ•Œ, μž…λ ₯ 슀트림의 eofbitκ°€ μ„€μ •λœλ‹€. 이것은 fail()κ³Ό eof() λ©”μ„œλ“œκ°€ trueλ₯Ό λ¦¬ν„΄ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.
  • ꡬ뢄 문자(λ””ν΄νŠΈλŠ” \n)에 λ„μ°©ν–ˆμ„ λ•Œ, ꡬ뢄 λ¬ΈμžλŠ” μž…λ ₯ μŠ€νŠΈλ¦ΌμœΌλ‘œλΆ€ν„° 제거되고 μ €μž₯λ˜μ§€ μ•ŠλŠ”λ‹€.
  • κ°€λŠ₯ν•œ μ΅œλŒ€ 문자수(string::npos와, λŒ€μž…μ— μ‚¬μš©ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬μ˜ λ°”μ΄νŠΈ 수 쀑 더 적은 것)λ₯Ό μ½μ—ˆμ„ λ•Œ, μž…λ ₯ 슀트림의 failbitκ°€ μ„€μ •λœλ‹€. 이것은 fail() λ©”μ„œλ“œκ°€ trueλ₯Ό λ¦¬ν„΄ν•œλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

λ¬Έμžμ—΄ μž‘μ—…

μ—¬μ„― 개의 관계 μ—°μ‚°μž λͺ¨λ‘λ₯Ό string 객체λ₯Ό μœ„ν•΄ μ˜€λ²„ λ‘œλ”©ν•  수 μžˆλ‹€. 기계 쑰회 μˆœμ„œλ‘œ λ”°μ‘Œμ„ λ•Œ λ‹€λ₯Έ 객체보닀 μ•žμ— λ‚˜μ˜€λŠ” 객체λ₯Ό μž‘μ€ κ²ƒμœΌλ‘œ κ°„μ£Όν•œλ‹€. 기계 쑰회 μˆœμ„œκ°€ ASCII μ½”λ“œμΌ 경우, μˆ«μžλ“€μ€ λŒ€λ¬Έμžλ“€λ³΄λ‹€ μž‘κ³ , λŒ€λ¬Έμžλ“€μ€ μ†Œλ¬Έμžλ“€λ³΄λ‹€ μž‘λ‹€.

 

μ–΄λ–€ λ¬Έμžμ—΄μ˜ 크기λ₯Ό μ•Œ 수 μžˆλ‹€. size()와 length() 멀버 ν•¨μˆ˜λŠ” λ‘˜ λ‹€ λ¬Έμžμ—΄μ— λ“€μ–΄μžˆλŠ” 문자 수λ₯Ό λ¦¬ν„΄ν•œλ‹€.

 

λ¬Έμžμ—΄ μ•ˆμ— λ“€μ–΄μžˆλŠ” λΆ€λΆ„ λ¬Έμžμ—΄μ΄λ‚˜ μ–΄λ–€ 문자λ₯Ό find() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 검색할 수 μžˆλ‹€.

 

string::nposλŠ” string 객체에 μ €μž₯ν•  수 μžˆλŠ” μ΅œλŒ€ ν—ˆμš© 문자 μˆ˜μ΄λ‹€.

 

μ˜€λ²„ λ‘œλ”©λœ find() λ©”μ„œλ“œ

λ©”μ„œλ“œ μ›ν˜• μ„€λͺ…
size_type find(const string &str,size_type pos =0) const ν˜ΈμΆœν•œ λ¬Έμžμ—΄μ˜ pos μœ„μΉ˜μ—μ„œλΆ€ν„° μ‹œμž‘ν•˜μ—¬ 처음으둜 λ°œμƒν•˜λŠ” λΆ€λΆ„ λ¬Έμžμ—΄ str을 κ²€μƒ‰ν•œλ‹€. λΆ€λΆ„ λ¬Έμžμ—΄μ΄ 발견되면 첫 문자의 인덱슀λ₯Ό λ¦¬ν„΄ν•œλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ string::nposλ₯Ό λ¦¬ν„΄ν•œλ‹€.
size_type find(const char *s,size_type pos =0) const ν˜ΈμΆœν•œ λ¬Έμžμ—΄μ˜ posμœ„μΉ˜μ—μ„œλΆ€ν„° μ‹œμž‘ν•˜μ—¬ 처음으둜 λ°œμƒν•˜λŠ” λΆ€λΆ„ λ¬Έμžμ—΄ sλ₯Ό κ²€μƒ‰ν•œλ‹€. λΆ€λΆ„ λ¬Έμžμ—΄μ΄ 발견되면 첫 문자의 인덱슀λ₯Ό λ¦¬ν„΄ν•œλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ string::nposλ₯Ό λ¦¬ν„΄ν•œλ‹€.
size_type find(const char *s,size_type pos =0,size_type n) const ν˜ΈμΆœν•œ λ¬Έμžμ—΄μ˜ pos μœ„μΉ˜μ—μ„œ λΆ€ν„° μ‹œμž‘ν•˜μ—¬ s에 μžˆλŠ” 처음 n개의 문자둜 κ΅¬μ„±λ˜λŠ” λΆ€λΆ„ λ¬Έμžμ—΄μ΄ 처음 λ‚˜μ˜€λŠ” 것을 μ°ΎλŠ”λ‹€. λΆ€λΆ„ λ¬Έμžμ—΄μ΄ 발견되면 첫 문자의 인덱슀λ₯Ό λ¦¬ν„΄ν•œλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ string::nposλ₯Ό λ¦¬ν„΄ν•œλ‹€.
size_type find(char ch,size_type pos=0) const ν˜ΈμΆœν•œ λ¬Έμžμ—΄μ˜ pos μœ„μΉ˜μ—μ„œ λΆ€ν„° μ‹œμž‘ν•˜μ—¬ 문자 chκ°€ 처음 λ‚˜μ˜€λŠ” 것을 μ°ΎλŠ”λ‹€. λ¬Έμžκ°€ 발견되면 κ·Έκ²ƒμ˜ 인덱슀λ₯Ό λ¦¬ν„΄ν•œλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ string::nposλ₯Ό λ¦¬ν„΄ν•œλ‹€.

 

string 객체λ₯Ό κ°€μ§€κ³  μžˆμ§€λ§Œ cμŠ€νƒ€μΌ λ¬Έμžμ—΄μ΄ ν•„μš”ν•  경우, c_str() λ©”μ„œλ“œκ°€, ν˜ΈμΆœν•˜λŠ” string 객체와 λ™μΌν•œ λ‚΄μš©μ„ κ°€μ§€λŠ” cμŠ€νƒ€μΌ λ¬Έμžμ—΄μ„ κ°€λ¦¬ν‚€λŠ” 포인터λ₯Ό λ¦¬ν„΄ν•œλ‹€λŠ” 것이닀.

728x90
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ (μƒˆμ°½μ—΄λ¦Ό)
    'πŸ”€ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ 정리' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • C++ 정리 - 48 (ν‘œμ€€ ν…œν”Œλ¦Ώ 라이브러리, μ»¨ν…Œμ΄λ„ˆ, μ•Œκ³ λ¦¬μ¦˜, μ΄ν„°λ ˆμ΄ν„°, ν•¨μˆ˜ 객체, vector ν…œν”Œλ¦Ώ 클래슀, Range에 κΈ°μ΄ˆν•œ 루프(c++11))
    • C++ 정리 - 47 (슀마트 포인터 ν…œν”Œλ¦Ώ 클래슀, auto_ptr ν…œν”Œλ¦Ώ, 슀마트 포인터 고렀사항, auto_ptr 보닀 unique_ptr이 더 쒋은 이유, unique_ptr을 μ‚¬μš©ν•˜λŠ” 경우, 슀마트 포인터 선택)
    • C++ 정리 - 45 (RTTI, dynamic_cast μ—°μ‚°μž, typeid μ—°μ‚°μžμ™€ type_info 클래슀, λ°μ΄ν„°ν˜• λ³€ν™˜ μ—°μ‚°μž, string 클래슀)
    • C++ 정리 - 44 (exception 클래슀, stdexcept μ˜ˆμ™Έ 클래슀, bad_alloc μ˜ˆμ™Έμ™€ new, μ˜ˆμ™Έ, 클래슀, 상속, 잘λͺ»λœ μ˜ˆμ™Έ)
    hugDog
    hugDog
    μ•ˆλ“œλ‘œμ΄λ“œ 곡뢀 쀑인 ν•™μƒμž…λ‹ˆλ‹€!

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

    κ°œμΈμ •λ³΄

    • ν‹°μŠ€ν† λ¦¬ ν™ˆ
    • 포럼
    • 둜그인

    단좕킀

    λ‚΄ λΈ”λ‘œκ·Έ

    λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
    Q
    Q
    μƒˆ κΈ€ μ“°κΈ°
    W
    W

    λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

    κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
    E
    E
    λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
    C
    C

    λͺ¨λ“  μ˜μ—­

    이 νŽ˜μ΄μ§€μ˜ URL 볡사
    S
    S
    맨 μœ„λ‘œ 이동
    T
    T
    ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
    H
    H
    단좕킀 μ•ˆλ‚΄
    Shift + /
    ⇧ + /

    * λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.