C++ String 기초

개요

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;
}