기타/C++ 문법

<substr> 인덱스로 문자열 자르기

배발자 2022. 1. 13.
반응형

문자열을 처리하기 위해서 정말 많이 쓰이는 함수이다. 

 

이 함수는 어떠한 문자열의 특정 인덱스에서 어떠한 인덱스까지 사이의 새로운 문자열을 만들때 보통 사용된다. 

예를 들어, "abcdefe" 라는 문자열을 "abc" 라던지 "cdef" 라던지 연속된 문자들의 서브스트링을 새로 만들때 필요하다. 

 

코딩테스트를 준비하면서 가장 많이 쓰이는 부분은 다음과 같으니 문법과 출력한것을 보고 이해하고 외우자

 

#include <iostream>
#include <string>
using namespace std; 
int main() {
	string s = "himynameis"; 
	
	cout << "    인덱스 번호     \n"; 
	for (int i = 0; i < s.size(); i++) cout << i << " ";	
	cout << "\n"; 
	for (int i = 0; i < s.size(); i++) cout<< s[i] << " "; 
	cout << "\n";

	string s1; 
	s1 = s.substr(2);//s문자열 인덱스 2번부터 끝까지 자르기
	cout << s1 <<"\n"; 
	s1 = s.substr(4, 5);//s문자열 인덱스 4번부터 5개 문자까지 자르기 
	cout << s1 << "\n"; 
}

출력부분

 

* 중요한 부분은 s.substr(4,5) 는 인덱스 4번부터 5번까지가 아니라 4번 위치에서부터 5개의 문자를 추출하라는 뜻이다

 

 

#include <iostream>
#include <string>

using namespace std; 

int main() {
	string s = "hi hi hi"; 
	int pos; 
	while ((pos = s.find(' ')) != string::npos) {
		cout << s.substr(0, pos) << endl;
		s = s.substr(pos + 1);
	}
	cout << s; 
}

추가적으로 만약 s에서 찾고자 하는 문자나 문자열이 없는 경우 쓰레기값이 들어가게 되는데   string::npos 를 활용해서 찾고자 하는 값이 없다면 npos를 반환하게 하여 반복문을 멈추게한다. 즉, 찾고자 하는 문자나 문자열이 있을때 동안 계속 while문이 동작하게 된다.

반응형

댓글