본문 바로가기

□ 이론/기타

C++에서의 string 클래스

▶필요성


문자열을 다루는 일은 흔하게 발생한다.

문자열을 다룰 때 string 클래스의 멤버 함수, 멤버 변수들을 

잘 알고 있으면 많은 도움이 될 것이다.


아래의 KeyPoint는 코드를 쉽게 이해하는데 도움을 주기 위해 작성되었다.



▶KeyPoint


  1. #include<string> 

    : string 라이브러리를 추가해주어야 한다.


  2. find()의 반환 값은 

     · 찾은 경우 = 찾은 문자열의 시작 인덱스

     · 찾지 못한 경우 = string::npos


  3. substr()의 반환 값은

     인자로 들어간 인덱스 범위에 맞는 문자열을 가진 string 객체이다.


  5. substr()의 인자값의 범위는 [ x, y ) 이다. 

     (x는 포함, y는 포함X)


  4. size()의 반환 값은

     문자열의 NULL문자가 위치한 인덱스이다.



▶SourceCode (예시)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<iostream>
#include<string>
using namespace std;
int main() {
    // str1 : "hello world !"
    string str1("hello world !");
    cout << "str1: " << str1 << endl << endl;
    cout << "str1.substr(0, 0): " << str1.substr(00<< endl;// ""
    cout << "str1.substr(0, 1): " << str1.substr(01<< endl;// "h"
    if (str1.find("z"== string::npos) {
        // 서브 스트링으로 "z"를 찾지 못한 경우
        cout << "str1.find(\"z\"): " << str1.find("z"<< endl;
        cout << "string::npos: " << string::npos << endl;
    }
    if (str1.find("ll"!= string::npos) {
        // 서브 스트링으로 "ll"을 찾은 경우
        cout << "str1.find(\"ll\"): " << str1.find("ll"<< endl;
        cout << "------------------------" << endl << endl;
    }
 
    //----------------------------------------------------------------------
 
    // str2 : "good morning !"
    string str2("good morning !");
    // 문자 개수 (NULL 인덱스값)
    int size = str2.size();
 
    cout << "str2: " << str2 << endl << endl;
    cout << "size: " << size << endl;
 
    for (int i = 0; i < size; i++) {
        // 마지막 문자 하나
        string str_end = str2.substr(size - 1size);
        // 마지막 문자 하나만 제외
        string str_begin = str2.substr(0size - 1);
        str2 = str_end + str_begin;
        cout << str2 << endl;
    }
    cout << "---------------" << endl;
 
    getchar();
    return 0;
}
cs



▶실행 결과



'□ 이론 > 기타' 카테고리의 다른 글

JSP 개념 정리  (0) 2019.04.17
JavaScript 기초 개념 정리  (0) 2019.03.29
스프링 프레임워크 기본 개념 정리  (0) 2019.03.27
[Java] 배열(array)  (0) 2019.01.06
StringTokenizer class (스트링 토크나이저 클래스)  (0) 2018.11.12