1. 기본 메소드
- size() : 문자열 사이즈 반환
- insert(위치, 문자열) : 특정 위치에 문자열 삽입
- erase(위치, 크기) : 특정 위치에서부터 크기만큼 문자열 삭제
- find(문자열) : 특정 문자열을 찾아 위치를 반환한다. 찾지못하면 string::npos가 반환된다.
- substr(위치, 크기) : 특정 위치에서 크기만큼의 문자열을 추출한다.
2. split
C++은 split 함수를 따로 지원하지 않고 있어 자체적으로 구현이 필요하다. split을 구현하는 함수는 다음과 같다.
vector<string> split(string input, string delimiter) {
vector<string> ret;
long long pos = 0;
string token = "";
// input에서 못 찾을 때 까지 delimiter를 찾는다
while ((pos = input.find(delimiter)) != string::npos) {
// 찾으면 delimiter의 앞까지 잘라내고 결과 배열에 저장한다
token = input.substr(0, pos);
ret.push_back(token);
// delimiter의 길이까지 합산한 값을 지운다
input.erase(0, pos + delimiter.length());
}
// 마지막에 남은 글자도 배열에 추가한다
ret.push_back(input);
return ret;
}
2-2. 공백 제거
문자열에서 공백을 제거하는 것은 split을 사용하지 않아도 erase, remove 함수를 써서 간단하게 구현할 수 있다.
코드는 다음과 같다.
string str = "hE ll O woR l d"
str.erase(remove(str.begin(), str.end(), ' '), str.end());
cout << str;
// 결과 : hEllOwoRld
3. reverse
string은 자체적으로 reverse 함수를 가지고 있지 않기 때문에, 문자열을 뒤집으려면 STL에서 제공하는 reverse 함수를 사용해야 한다. 이 때 원본 문자열 자체가 변형되는 것이므로 주의가 필요하다.
#include <bits/stdc++.h>
using namespace std;
int main(){
string a = "Hello world";
reverse(a.begin(), a.end());
cout << a << '\n';
reverse(a.begin()+3, a.end()); // begin에서 3만큼 뒤인 문자부터 reverse
}
/*
결과값
dlrow olleH
dlrHello wo
*/
4. 형변환
string -> int 변환은 stoi, int-> string 변환은 to_string()을 사용한다.
#include <bits/stdc++.h>
using namespace std;
int main() {
string a = "1234";
int num = stoi(a);
cout << num << '\n';
string s = to_string(num);
cout << s << '\n';
}
/*
결과값
1234
1234
*/
'Problem Solving > C++' 카테고리의 다른 글
피보나치 수열의 다양한 구현방법 (0) | 2023.04.03 |
---|---|
정렬 - sort 함수 다루기 (기본 정렬부터 커스텀까지) (0) | 2023.01.24 |
배열의 초기화 (0) | 2023.01.19 |
순열과 조합 구현하기 (1) | 2023.01.16 |