알고리즘/C++

string STL

mint* 2022. 12. 28. 19:04
728x90

헤더 : #include <string> 또는 #include <bits/stdc++.h> 

 

+=

문자열과 문자열을 더할때 사용

 

begin(), end()

문자열의 처음과 끝 iterator 반환

 

advance(iterator, cnt)

해당 iterator를 cnt까지 증가시킨다

#include <bits/stdc++.h>
using namespace std;

vector<int> v;

int main(){
	for(int i=0;i<5;i++) v.push_back(i); //0 1 2 3 4
	
	auto it = v.begin();
	cout << *it << "\n"; //0
	advance(it, 3);
	cout << *it << "\n"; //3, it의 값을 3 증가시킴 
	cout << *(v.begin()) << "\n"; //0
	return 0;
}

 

size()

문자열의 사이즈 반환

 

insert(위치, 문자열)

특정 위치에 문자열 삽입, O(n)

 

erase(위치, 삭제할 크기)

특정 위치에 크기만큼 문자열 지움, O(n)

 

pop_back()

문자열 끝을 지움, O(1)

 

find(문자열)

특정 문자열을 찾아 위치를 반환

문자열을 못찾을 경우 string::npos 반환

string::npos는 size_t 타입의 최대값을 의미한다. OS에 따라 달라지며(64비트, 32비트) 부호가 없는 최대 정수값을 가진다. ex) 18446744073709551615

 

substr(위치, 크기)

특정 위치에서 크기만큼 문자열 추출, O(n)

#include <bits/stdc++.h>
using namespace std;

int main(){
	string a = "love is";
	a += " pain!";
	a.pop_back(); //마지막 문자 ! 삭제함 
	cout << a << ":" << a.size() << "\n";
	
	cout << *(a.begin()) << '\n'; //처음 글자 출력 
	cout << *(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("is");
	if(it!=string::npos) cout << "포함"<<"\n"; //문자열 is 찾았으면 포함 출력  
	
	cout << it << "\n"; //찾은 문자열의 첫번째 원소 위치 
	cout << string::npos << "\n";
	
	//문자열 추출 
	cout << a.substr(5,2) << "\n";
	 
	return 0;
}

 

reverse()

원본 문자열을 거꾸로 뒤집음, 리턴값 없이 원본 수정

reverse(begin iterator, end iterator)로 일정 부분만 수정 가능

 

split() -> C++에서는 지원X, 직접 구현

 

atoi(s.c_str())

문자열을 int로 바꿔야하는 상황일때 입력받은 문자열이 숫자로 구성되어있는지 확인 가능

숫자로 구성된 문자열 -> 1

그렇지 않을때 -> 0

#include <bits/stdc++.h>
using namespace std;

int main(){
	string s ="1";
	string s2="amumu5";
	cout << atoi(s.c_str()) << "\n"; //숫자로 구성된 문자열이므로 1 리턴 
	cout << atoi(s2.c_str()) << "\n"; //문자로 구성된 문자열이므로 0 리턴 
	
	return 0;
}

 

s3="35mumu8"일때 atoi 결과가 35으로 리턴되는 것을 보고 검색해보니
문자열의 첫부분만 숫자이면 그 숫자까지 된다고 한다.
stoi(str)도 있다.

https://dream-and-develop.tistory.com/57

 

[C/C++] 문자열 처리 함수 c_str(), atoi(), stoi()

c_str() string 객체 -> *char atoi() *char -> int stoi() string 객체 -> int #include #include using namespace std; int main() { string str = "100ss"; // string str("100ss"); char s[] = "100ss"; int m = atoi(s); int n = atoi(str.c_str()); int k = stoi(st

dream-and-develop.tistory.com

 

728x90