c++

[c++] 코딩테스트 준비 과정 중 자주 쓰는 STL 정리 _ string 처리

hojung 2023. 1. 2.
728x90
반응형

1. string 처리

1. substr

string s;
s.substr(0,1);

s.substr(시작 인덱스, 끝 인덱스) 끝 인덱스까지 잘린다. 

2. 아스키 코드

A = 65번, Z = 90번, a = 97번 z = 122번

 

3. find

string s = "i like coding";
	cout << s.find("k") << "\n"; // 4
	cout << s.find("z") << "\n";
//문자열을 찾지 못하는 경우는 npos를 반환한다.

if (s.find("z") == string::npos) {
		cout << "npos";
	} // npos

4. replace

string s = "abcde";
string ch = "www";
//s.replace(문자열 시작 인덱스, 길이, 치환할 문자열);
cout << s << "\n"; // abcde
cout << s.replace(1,3, ch);  // awwwde;

응용

특정 문자열을 기존 문자열에서 찾아서 변경 

string s = "i like coding";
string find_s = "coding";
string re_str = "math";

s.replace(s.find(find_s), find_s.length(), re_str); // i like math

5. atoi, stoi, to_string

1. atoi 

- 숫자에 해당하는 문자열을 int로 바꿔주는 역할 만약 숫자가 아닌 문자가 들어있다면 0을 반환한다.

- 숫자가 먼저 나오고 문자가 나오는 경우에는 앞에 있는 문자만 변환하여 보여준다. 

string s = "1234";
cout << atoi(s.c_str()); // 1234

string s2 = "1234코딩";
cout << atoi(s2.c_str()); //1234

string s3 = "코딩1234";
cout << atoi(s3.c_str()); // 0
//c_str()을 사용하여 raw_pointer를 넘겨주어야한다.

2. stoi

string s2 = "12345";
	cout << stoi(s2) << "\n"; //12345
	cout << atoi(s2.c_str()) << "\n";//12345

	string s3 = "s1234";
	cout << atoi(s3.c_str()) << "\n";//0
    cout << stoi(s3) << "\n"; // 에러

3. to_string()

int num = 10;
string str = to_string(num);
cout << str << "\n"; // 10

 

6. erase

string id = "simjeongho0";
id.erase(id.end()-1);
cout<<id <<"\n"; // simjeongho

응용

#include <algorithm>
#incldue <string>
string id = "simjeongho0";
char remove[4] = { 's','j' , 'm' , '0' };
cout << id << "\n";//simjeongho0

for(char a : remove) {
	id.erase(remove(id.begin() , id.end() , a) , id.end());
}

remove 배열 안에 들어있는 문자들을 모두 지울 수 있다. algorithm헤더에 존재하는 remove함수와 같이 사용한다. 

 

응용2

string new_id = "12323456778";
	sort(new_id.begin(), new_id.end());
	cout << new_id << "\n"; // 12233456778
	new_id.erase(unique(new_id.begin(), new_id.end()) , new_id.end());
	cout << new_id << "\n";//12345678

algorithm헤더의 sort와 unique함수를 이용하면 erase 함수와 더불어 중복된 값을 삭제한 후 정렬할 수 있다. 

728x90
반응형

'c++' 카테고리의 다른 글

[c++] Huffman Algorithm - 파일 압축 알고리즘  (0) 2022.04.28
c++ vector  (0) 2022.03.16
heap sort  (0) 2022.03.15
DoubleLinkedList  (0) 2022.03.13
자료구조 stack을 이용한 문제 풀이 1(postfix)  (0) 2021.06.18

댓글