알고리즘/문자열

[C++] String(문자열)

키베이루 2022. 12. 28. 09:17

 

string

문자열을 표현하는 방법에는 2가지가 있다.

char s[10];
string a;

 

string에서 많이 사용하는 메서드

#include <bits/stdc++.h>
using namespace std;
int main(){
	string a = "love is";
    a += " pain!";
	a.pop_back();
	cout << a << " : " << a.size() << "\n";
	cout << char(* a.begin()) << '\n';
	cout << char(* (a.end() - 1)) << '\n';
	
	a.insert(0, "test ");
	cout << a << " : " << a.size() << "\n";
	
	a.erase(0, 5);
	cout << a << " : " << a.size() << "\n";
	
	auto it = a.find("love"); // 문자열 it가 love를 찾았다면 it에 love 저장 못찾으면 string::npos 저장
	if (it != string::npos){  // it이 string::npos가 아니라면 love를 포함하고있음
	cout << "포함되어 있다." << '\n';
	}
	cout << it << '\n';
	cout << string::npos << '\n';
	
	cout << a.substr(5, 2) << '\n';
	return 0;
}
/*
love is pain : 12
l
n
test love is pain : 17
love is pain : 12
포함되어 있다.
0
18446744073709551615
is
*/

 

+=

문자열에서 문자열을 더할 때 사용한다.

begin()

문자열의 첫번째 요소를 가리키는 이터레이터를 반환

end()

문자열의 마지막 요소 그 다음을 가리키는 이터레이터 반환

size()

문자열의 사이즈를 반환

 insert(위치, 문자열)

특정위치에 문자열을 삽입 -> O(n)의 시간복잡도

erase(위치, 크기)

특정위치에 크기만큼 문자열 삭제 -> O(n)

pop_back()

문자열의 끝 지움 -> O(1)

find(문자열)

특정 문자열을 찾아 위치 반환. 해당 문자열을 찾지 못했을 경우 string::npos를 반환 -> O(n)

string::npos는 size_t 타입의 최대값을 의미한다.

substr(위치, 크기)

특정 위치에서 크기만큼의 문자열을 추출 -> O(n)

 

STL에서 제공하는 문자열 기능

reverse(시작위치, 끝 위치)

https://www.acmicpc.net/problem/10988

 

10988번: 팰린드롬인지 확인하기

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

www.acmicpc.net

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdio>
using namespace std;

int main() {
	string s;
	cin >> s;
	string reverse_s;
	reverse_s = s; // 반대를 담아둘 reverse_s를 선언하고 s를 담아둔다
	reverse(reverse_s.begin(), reverse_s.end()); // reverese_s를 반대로 뒤집는다.
	if (s == reverse_s) { // s와 reverse_s가 같다면
		cout << 1; // 1출력
	}
	else { // s와 reverse_s가 같지 않다면
		cout << 0; // 0출력
	}

}

 

split()

문자열을 특정 문자열 기준으로 쪼개어 배열화 시키는 함수 -> O(n)

참고 : https://kiveiru.tistory.com/83

 

[C++] Split

Split은 문자열을 특정 문자열을 기준으로 쪼개어서 배열화 시키는 함수의 의미로 사용된다. C++에서는 split() 함수를 지원하지 않기때문에 직접 구현해야한다. #include #include #include #include using names

kiveiru.tistory.com