본문 바로가기

Programming Language/C++

C++ 문자열 정리 (String class)

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main(){
 
    // [문자열]
 
 
    // 문자열 비교 string.compare() 같으면 0, 다르면 -1 리턴
    cout << "[String compare]" << '\n';
 
    string a = "abc";
    string b = "abcd";
    a.compare(b);
 
 
 
 
    // 문자열 조회 및 찾기 string.find()
    cout << "[String find]" << '\n';
 
    a = "abcd";
    int i;
    cout << a.find('a'<< '\n'// 0
    cout << a.find("bcd"<< '\n'// 1 
 
    cout << a.find("g"<< '\n'// 존재하지 않는 숫자, 엉뚱한 숫자가 나옴
 
    i = a.find("g");
    cout << i << '\n';    // -1
    // 존재하지 않으면 - 1 리턴 
    // 존재하면 해당 문자 혹은 문자열이 위치하는 인덱스 값을 리턴 
    // 그래서 find 결과가 0 이상인지 아닌지 확인하는 과정 경우에 따라 추가 필요할 수 있음
 
 
 
 
    // 문자열 인덱스의 값 찾기 at
    cout << "[String at]" << '\n';
 
    a = "abcd";
    cout << a.at(0<< '\n';    // 'a'
 
 
 
 
    // 문자열 합치기 +=, append
    cout << "[String +=, append]" << '\n';
 
    a = "";
    a += "abcd"//abcd
 
    a.append("bbbb");            // 문자열 "bbbb" append
    cout << a << '\n';            // abcdbbbb
 
    a.append("abcd"2);        // abcd의 인덱스 0부터 2개 "ab" append
    cout << a << '\n';            // abcdbbbbab
 
    a.append("abcdefg"13);    // abcdefg의 인덱스 1부터 3개  "bcd" append
    cout << a << '\n';            // abcdbbbbabbcd
 
 
 
 
    // 문자열 삽입 insert(index, str)
    cout << "[String insert]" << '\n';
 
    a = "i coding";
    a.insert(1" like");
    cout << a << '\n';            // "i like coding"
    // 해당 index에 값을 넣음, 삽입하는 index에 값이 있었으면 뒤로 밀림
 
 
 
 
    // 문자열 일부영역 지우기 erase
    cout << "[String erase]" << '\n';
 
    a = "abcdefghjkl";
    a.erase(15);                // "bcdef"가 삭제됨
    cout << a << '\n';            // a는 "aghjkl"
 
 
 
    // 문자열의 특정문자 모두 지우기 erase(remove(s.begin(), s.end(), char ), s.end())
    cout << "[String erase(remove(s.begin(), s.end(), char ), s.end())]" << '\n';
 
    a = "abcdebbasadabbbbb";
    a.erase(remove(a.begin(), a.end(), 'b'), a.end()); // 'b' 제거 
    cout << a << '\n';            // "acdeasada"
 
 
 
 
    //문자열 이동 (흡사 ctrl + x)
    cout << "[String move]" << '\n';
 
    a = "abcd";
    b = move(a);                // a는 공백, b는 기존 a의 문자열 "abcd"가 이동하여 대입됨
    cout << a << '\n';            // 공백
    cout << b << '\n';            // "abcd" 
 
 
 
 
    //문자열 자르기 혹은 추출 substr
    cout << "[String substr]" << '\n';
 
    a = "good morning Mr Brown";
    b = "";
 
    b = a.substr(57);    // 인덱스 5부터 7개
    cout << b << '\n';        // "moring"
 
    b = a.substr(5);        // 인덱스 5부터 마지막 인덱스까지
    cout << b << '\n';        // "morning Mr Brown"
 
 
 
 
    //문자열 replace 
    cout << "[String replace]" << '\n';
 
    a = "i like coding";
    string find_str = "like";
    string replace_str = "hate";
 
    cout << a << '\n';        // i like coding
 
    a.replace(a.find(find_str), find_str.length(), replace_str);
    cout << a << '\n';        // i hate coding
 
    cout << "asdasdasdada" << "\n";
    cout << "\n";
 
 
    return 0;
}
cs

'Programming Language > C++' 카테고리의 다른 글

C++ Template Function  (0) 2019.09.29
C++ 최소값(min), 최대값(max) 그리고 minmax()  (0) 2019.09.28
C++ Template inline function  (0) 2019.09.25
C++ 실수 mod  (0) 2019.09.25
C++ 피보나치 수열  (0) 2019.09.25