01. +=
메서드는 아니지만 문자열을 더할 때 사용한다.
push_back() 메서드는 문자 하나씩밖에 더하지 못해 += 를 더 자주 사용한다.
string a = "abc";
a += "d";
02. begin(), end()
begin()은 문자열의 첫 번째 요소를 가리키는 이터레이터를 반환하고 end()는 문자열의 마지막 요소의 그 다음을 가리키는 이터레이터를 반환한다. 해당 위치의 값을 뽑아내기 위해서는 이터레이터를 기반으로 * 를 사용할 수 있다.
string A = "abc";
cout << *A.begin() << *(A.begin()+1) << *(A.end()-1);
[출력]
abc
03. size()
문자열의 사이즈를 반환한다. 시간복잡도는 O(1) 이다.
string A = "abc";
cout << A.size();
[출력]
3
04. insert(위치, 문자열)
std::vector::insert() 와 std::string::insert() 가 다르다. String의 insert는 해당 문자열의 위치를 정수값으로 나타내며 해당 위치에 문자열을 삽입한다. 시간복잡도는 O(n)이다.
string A = "abc";
A.insert(1, "??");
cout << A;
[출력]
a??bc
05. erase(위치, 크기)
erase()는 특정 위치에 크기만큼의 문자열을 지운다. O(n)의 시간복잡도를 지닌다.
string A = "abcdefg";
A.erase(2, 3);
cout << A;
[출력]
abfg
string.erase()와 vector.erase()는 사용법이 다르다.
string.erase(시작인덱스, 끝인덱스)는 시작인덱스부터 끝인덱스 전까지 문자를 지운다.
vector.erase(시작주소, 끝주소)는 시작주소부터 끝주소 전까지 요소를 지운다.
06. pop_back()
문자열의 끝의 한 문자를 지운다. 시간복잡도는 O(n) 이다.
string A = "abc";
A.pop_back();
cout << A;
[출력]
ab
07. find(문자열)
특정 문자열을 찾아 위치를 반환한다. 문자열 A에서 "abc"를 찾으려면 A.find("abc"); 와 같이 사용할 수 있다.
찾으면 문자열 내에서의 인덱스 위치를 반환하고 찾지 못하면 string::npos를 반환한다.
코드를 통해 알아보자.
string A = "abchello";
cout << A.find("abc") << '\n';
cout << A.find("hi");
[출력]
0
18446744073709551615
08. substr(위치, 크기)
특정 위치에서 크기만큼의 문자열을 추출한다. O(n)의 시간복잡도를 지닌다.
string A = "abcde";
cout << A.substr(0,3) << '\n';
string B = A.substr(3,5);
cout << B;
[출력]
abc
de
09. split(입력, 구분자)
#include <bits/stdc++.h>
using namespace std;
vector<string> split(string input, string delimeter){
vector<string> ret;
long long pos = 0;
string token = "";
while((pos = input.find(delimeter)) != string::npos){
token = input.substr(0, pos);
ret.push_back(token);
input.erase(0, pos + delimeter.size());
}
ret.push_back(input);
return ret;
}
int main(){
string input = "hello go to the gym";
string del = " ";
vector<string> a = split(input, del);
for (auto i:a) cout << i << endl;
}
'C++' 카테고리의 다른 글
[C++] list 관련 함수 정리 : push_front(), insert(), erase(), pop_front(), front(), clear(), ... (0) | 2024.02.15 |
---|---|
[C++] lower_bound()와 upper_bound() (0) | 2024.02.14 |
[C++] 순열을 만드는 함수 : next_permutation() (0) | 2024.02.08 |
[C++] 요소의 최댓값과 최솟값 : max_element(), min_element() (0) | 2024.02.02 |
[C++] 요소의 합을 구하는 함수 : accumulate() (0) | 2024.02.02 |