개요
c++로 알고리즘 문제를 풀 때 항상 문자열 관련 메소드가 헷갈려서 자주 쓰는 메소드만 정리해보았다.
C++ String
문자열 부분 추출
s.substr(int idx, int num) : idx부터 num길이만큼 문자열 추출
문자열 부분 교체
s.replace(int idx, int num, string ss) : idx부터 num길이만큼 ss로 교체
문제열 검색
s.find(string ss), s.find(string ss, int idx) : idx부터 ss가 있으면 해당 인덱스 반환 없다면 string::npos(-1) 반환
string s = "hello";
s += " world";
cout << s.size() << "\n";
cout << s.substr(2, 3) << "\n"; //llo
cout << s[1] << "\n"; //e
s.replace(6, 5, "guys"); // hello guys
int idx = s.find("guys"); // 6
s.replace(idx, 4, "layds");
s.erase(0, 5); // layds
s[4] = e; // laydes
s.insert(0, "hi ");
if(s.find("to") == string::npos)
cout << "to is not in s\n";
C++ split
substr과 find를 이용
vector<string> split(string& s, string& sep){
vector<string> ret;
int pos = 0;
while(pos < s.size()){
int nxt_pos = s.find(sep, pos);
if(nxt_pos = string::npos) nxt_pos = s.size();
if(nxt_pos - pos > 0)
ret.push_back(s.substr(pos, nxt_pos - pos));
pos = nxt_pos + sep.size();
}
return ret;
}
istringstream 이용
vector<string> split(string& s, string& sep){
istringstream iss(s);
string buffer;
vector<string> ret;
while(getline(iss, buffer, sep)){
ret.push_back(ret);
}
return ret;
}
'C++' 카테고리의 다른 글
[STL] STL && STL 관련 함수 정리 (0) | 2025.02.19 |
---|---|
[C++ Projet] Text기반 게임 회고 (0) | 2025.01.17 |
[C++ Project] 등급별 아이템 (0) | 2025.01.13 |
[C++ Project] text기반 게임 기획 (0) | 2025.01.10 |
[C++] regex로 정규 표현식 사용하기 (0) | 2025.01.06 |